如何将 base64 POST 到 Web 服务

Jas*_*son 5 c# base64 web-services webmethod

我想要 POST 一个参数,即base64to webservice,但它不起作用。

    string postData = "base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH+iRVKDkbOmUiKpxW0/S6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn+96j7zp/wA=";
    byte[] dataArray = Encoding.Default.GetBytes(postData);

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServerPage);
    request.Method = "POST";
    request.ContentLength = dataArray.Length;
    request.ContentType = "application/x-www-form-urlencoded";

    Stream dataStream = null;
    try
    {
        dataStream = request.GetRequestStream();
    }
    catch (Exception)
    {
    }

    dataStream.Write(dataArray, 0, dataArray.Length);
    dataStream.Close();
Run Code Online (Sandbox Code Playgroud)

但参数requestHeader更改为:

base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH%2BiRVKDkbOmUiKpxW0%2FS6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn%2B96j7zp%2FwA%3D

所以WebService收到了错误的参数:

[WebMethod]
public string GenerateOrder(string base64)
{ 
    byte[] buffer = Convert.FromBase64String(base64); //Exception here
} 
Run Code Online (Sandbox Code Playgroud)

Kai*_*ann 4

HttpUtility.UrlDecode(base64)在将其从 转换回之前使用base64, 。

  • 我解决了,byte[] buffer = Convert.FromBase64String(base64); string Base64StrData = Convert.ToBase64String(buffer).Replace("+", "%2B"); 只需添加这个..因为在将Url传递到空格后加上加号,所以得到非法的Base64字符串,现在它起作用了.. string postData = "str=" + Base64StrData; (2认同)