0

URLに投稿する前に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に感謝します

4

2 に答える 2

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);
于 2012-10-09T23:10:52.443 に答える
0

Stream を requestStream として使用しています。Stream.Write は Base64 文字列ではなく、バイト配列を取ります。

あなたは間違った順序でそれをやっていると思います。最初に strCXML を Base64 文字列に変換してから、それをバイト配列にエンコードして要求ストリームに書き込みます。

于 2012-10-09T23:09:43.087 に答える