gpt4 book ai didi

C# HttpWebRequest 内容类型不改变

转载 作者:行者123 更新时间:2023-11-30 22:05:47 25 4
gpt4 key购买 nike

在 C# 中,我需要使用 HTTP 将一些数据发布到 Web 服务器。我不断收到 Web 服务器返回的错误,在嗅探数据后我发现问题是内容类型 header 仍设置为“text/html”并且没有更改为“application/json;Charset= UTF-8"就像在我的程序中一样。我已经尝试了所有我能想到的可能会阻止它发生变化的方法,但我没有想法。

这是导致问题的函数:

private string post(string uri, Dictionary<string, dynamic> parameters)
{
//Put parameters into long JSON string
string data = "{";
foreach (KeyValuePair<string, dynamic> item in parameters)
{
if (item.Value.GetType() == typeof(string))
{
data += "\r\n" + item.Key + ": " + "\"" + item.Value + "\"" + ",";
}
else if (item.Value.GetType() == typeof(int))
{
data += "\r\n" + item.Key + ": " + item.Value + ",";
}
}
data = data.TrimEnd(',');
data += "\r\n}";

//Setup web request
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(Url + uri);
wr.KeepAlive = true;
wr.ContentType = "application/json; charset=UTF-8";
wr.Method = "POST";
wr.ContentLength = data.Length;
//Ignore false certificates for testing/sniffing
wr.ServerCertificateValidationCallback = delegate { return true; };
try
{
using (Stream dataStream = wr.GetRequestStream())
{
//Send request to server
dataStream.Write(Encoding.UTF8.GetBytes(data), 0, data.Length);
}
//Get response from server
WebResponse response = wr.GetResponse();
response.Close();
}
catch (WebException e)
{
MessageBox.Show(e.Message);
}
return "";
}

我遇到问题的原因是内容类型保持为“文本/html”,无论我将其设置为什么。

提前致谢。

最佳答案

这听起来很奇怪,但这对我有用:

((WebRequest)httpWebRequest).ContentType =  "application/json";

这会更改内部 ContentType,从而更新继承的类型。

我不确定为什么会这样,但我猜这与 ContentTypeWebRequest 中的抽象属性有关,并且存在一些错误或问题HttpWebRequest

中的重写

关于C# HttpWebRequest 内容类型不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138724/

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