HttpClient在POST请求中未传递内容

3

我正在使用 HttpClient 进行一个简单的调用。问题在于它似乎没有发送我提供的内容。服务器因此向我返回了一个错误,当我使用 Fiddler 查看请求时,它并未像应该展示出内容:

HttpContent content = new FormUrlEncodedContent(
                new List<KeyValuePair<string, string>> { 
                    new KeyValuePair<string, string>("key1", "value1"),
                    new KeyValuePair<string,string>("key2","value2"),
                    new KeyValuePair<string,string>("key3","value3"),
                    new KeyValuePair<string,string>("key4", "value4"),
                    new KeyValuePair<string, string>("key5", "value5"),
                    new KeyValuePair<string, string>("key6", "value6")
                });
content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
content.Headers.ContentType.CharSet = "UTF-8";
HttpResponseMessage resposne = await client.PostAsync(new Uri("my_url"), content);

有什么建议可能出了问题吗?

3
服务器返回了什么错误?请求是什么样子的? - kasperhj
1
你的代码看起来没问题。当你说内容不像应该的那样时,你能解释一下它应该是什么样子的,与预期输出有何不同吗? - Darin Dimitrov
抱歉,这个问题可能比较初级或者有些私人。但是更改为以下内容是否有帮助呢?'content.Headers.ContentType = "application/x-www-form-urlencoded";' - Jammerz858
@Jammerz858,ContentType 属性不是字符串类型,因此您无法将其分配给字符串值。因此,这甚至无法编译。 - Darin Dimitrov
@DarinDimitrov 抱歉,我想到的是 HttpWebRequest 对象的 'ContentType' 属性 - 我完全错了! - Jammerz858
1个回答

0

可能是UserAgent的问题。 MSDN上的HttpClient

默认情况下,HttpClient对象在向Web服务发送HTTP请求时不会发送用户代理标头。包括一些Microsoft Web服务器在内的某些HTTP服务器要求客户端在发送的HTTP请求中包含用户代理标头。HTTP服务器使用用户代理标头确定如何格式化某些HTTP页面,以便它们在不同的Web浏览器和形态因素(例如移动电话)上呈现更好的效果。如果客户端请求没有用户代理标头,则有些HTTP服务器会返回错误。我们需要使用Windows.Web.Http.Headers命名空间中的类添加用户代理标头,以避免这些错误。我们将此标头添加到HttpClient.DefaultRequestHeaders属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接