gpt4 book ai didi

http - 使用非 ASCII 字符发布 XML

转载 作者:可可西里 更新时间:2023-11-01 16:46:06 25 4
gpt4 key购买 nike

我正在尝试修补 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?

最佳答案

我没有使用过 RestSharp,但看解释我猜是负载的 ContentLength 与内部字符串不匹配。 XML 使用 UTF-8 转义,因此负载可能会变得更大。因此在原始字符串上,表示可能 Content-Length 可能不同。

也许你在错误的地方计算了 Content-Length?

关于http - 使用非 ASCII 字符发布 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3607132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com