我有一些文本需要在发布到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 谢谢
答案 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字符串,然后将其编码为字节数组以写入请求流。