【发布时间】:2011-04-06 03:33:01
【问题描述】:
我正在尝试修补 RestSharp 以使其能够将具有非 ASCII 字符的 POST 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);
}
但它会在Stream.Dispose() 上抛出IOException,说“在写入所有字节之前无法关闭流。”
如何发布此 XML?
【问题讨论】:
标签: http post non-ascii-characters restsharp