gpt4 book ai didi

c# - 为什么我在执行 HTTP POST 时用完了流的字节数?

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:25 24 4
gpt4 key购买 nike

这让我抓狂:

    WebRequest request = WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = Encoding.UTF8.GetByteCount(data);
Stream reqs = request.GetRequestStream();
StreamWriter stOut = new StreamWriter(reqs, Encoding.UTF8);
stOut.Write(data);
stOut.Flush();

我得到一个异常,我用完了流中的字节......但我使用了相同的编码来获取字节数!

使用 ASCII 这不会失败。这是因为Windows喜欢添加的UTF-8 BOM吗?

最佳答案

这可能是 BOM;尝试使用不带 BOM 的显式编码:

Encoding enc = new UTF8Encoding(false);
...
request.ContentLength = enc.GetByteCount(data);
...
StreamWriter stOut = new StreamWriter(reqs, enc);

更简单;切换到 WebClient 而不是尝试自己处理它;用这个发布表单非常容易:

    using (var client = new WebClient())
{
var data = new NameValueCollection();
data["foo"] = "123";
data["bar"] = "456";
byte[] resp = client.UploadValues(address, data);
}

或者使用代码 from here :

  byte[] resp = client.Post(address, new {foo = 123, bar = 546});

关于c# - 为什么我在执行 HTTP POST 时用完了流的字节数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759195/

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