【问题标题】:How to POST base64 to Webservice如何将 base64 发布到 Web 服务
【发布时间】:2013-08-05 05:52:23
【问题描述】:

我想将一个参数base64 POST 到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();

requestHeader 中的参数更改为:

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

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

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

【问题讨论】:

  • 不是 100% 确定答案,因此是评论,但您不能尝试在发送之前和之后对字符串进行编码吗?

标签: c# web-services base64 webmethod


【解决方案1】:

使用HttpUtility.UrlDecode(base64),然后再从base64 转换回来。

【讨论】:

  • 我将代码更改为字符串 b = HttpUtility.UrlDecode(xmlStr); byte[] 缓冲区 = Convert.FromBase64String(b);但仍然无法正常工作...返回远程服务器返回错误:(500)内部服务器错误。但是如果我删除 byte[] buffer = Convert.FromBase64String(b);这条线..它工作......
  • 什么是 xmlStr?我在您的示例代码中没有找到。如果我从您的示例中获取 requestHeader 值并对其进行解码,我会从“postData”中获得准确的值。
  • 您的字符串是否包含 'base64=' 部分?在将其从 base64 转换之前,您可能必须先将其删除。
  • 我解决了,byte[] buffer = Convert.FromBase64String(base64); string Base64StrData = Convert.ToBase64String(buffer).Replace("+", "%2B");只需添加这个..因为通过 Url 进入空格后的加号所以得到非法的 Base64 字符串,现在它工作了.. string postData = "str=" + Base64StrData;
猜你喜欢
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多