2

RestSharpにパッチを適用して、要求の本文POSTとして非ASCII文字を使用してXMLを実行できるようにしようとしています。POST

書き方は次のとおりです。

private void WriteRequestBody(HttpWebRequest webRequest) {
    if (HasBody) {
        webRequest.ContentLength = RequestBody.Length;

        var requestStream = webRequest.GetRequestStream();
        using (var writer = new StreamWriter(requestStream, Encoding.ASCII)) {
            writer.Write(RequestBody);
        }
    }
}

RequestBodyは文字列であり、サーバーが実際にリクエストを解析しようとすると、すべての非ASCII文字がに変わります???

今、私は次のことをします:

var encoding = Encoding.UTF8;

webRequest.ContentLength = encoding.GetByteCount(RequestBody);

var requestStream = webRequest.GetRequestStream();
using (var writer = new StreamWriter(requestStream, encoding)) {
    writer.Write(RequestBody);
}

しかし、 「すべてのバイトが書き込まれるまでストリームIOExceptionStream.Dispose()閉じることはできません」というメッセージが表示されます。

このXMLを投稿するにはどうすればよいですか?

4

1 に答える 1

0

私は RestSharp を使用していませんが、説明を見ると、ペイロードの ContentLength が内部文字列と一致しないと推測されます。XML は UTF-8 エスケープを使用するため、ペイロードが大きくなる可能性があります。したがって、元の文字列では、表現が Content-Length と異なる可能性があります。

間違った場所で Content-Length を計算したのではないでしょうか?

于 2010-08-31T20:13:19.347 に答える