【问题标题】:POSTing XML with non-ASCII characters使用非 ASCII 字符发布 XML
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2012-08-06
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多