Base64字符串发布到URL

时间:2012-10-09 23:05:07

标签: c# .net

我有一些文本需要在发布到url之前被cnoverted到base64。 这是我的代码

  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
      byte[] postDataBytes = Encoding.UTF8.GetBytes(strCXML);
       string returnValue = System.Convert.ToBase64String(postDataBytes);
       req.Method = "POST";
       req.ContentLength = postDataBytes.Length;
       req.ContentLength = postDataBytes.Length;
       Stream requestStream = req.GetRequestStream();
       requestStream.Write(returnValue,0, postDataBytes.Length);

问题是我在最后一行得到错误System.IO.Stream.Write(byte [],int,int) returnValue是base64字符串,不能用作stream.writer中所需的byte [] 任何想法如何把那个base64字符串称为returnvalue并将其放入url 谢谢

2 个答案:

答案 0 :(得分:4)

您应该通过Encoding.GetBytes

将base64字符串转换为字节数组
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
byte[] postDataBytes = Encoding.UTF8.GetBytes(strCXML);
string returnValue = System.Convert.ToBase64String(postDataBytes);

postDataBytes = Encoding.UTF8.GetBytes(returnValue);

req.Method = "POST";
req.ContentLength = postDataBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(postDataBytes, 0, postDataBytes.Length);

答案 1 :(得分:0)

您正在使用Stream作为您的requestStream。 Stream.Write采用字节数组,而不是Base64字符串。

我认为你是按照错误的顺序做的。我首先将strCXML转换为Base64字符串,然后将其编码为字节数组以写入请求流。