Я пытаюсь исправить 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?