Я пытаюсь исправить RestSharp , чтобы он мог POST
XML с символами, отличными от ASCII, в виде 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);
}
Но он выдает IOException
на Stream.Dispose()
, говоря: «Невозможно закрыть поток, пока не будут записаны все байты».
Как опубликовать этот XML?