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);

关于什么可能是错误的任何建议?

4

1 回答 1

0

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

默认情况下,HttpClient 对象不会将任何用户代理标头与 HTTP 请求一起发送到 Web 服务。某些 HTTP 服务器(包括某些 Microsoft Web 服务器)要求在从客户端发送的 HTTP 请求中包含用户代理标头。HTTP 服务器使用 user-agent 标头来确定如何格式化某些 HTTP 页面,以便它们在客户端上针对不同的 Web 浏览器和外形尺寸(例如手机)更好地呈现。如果客户端请求中没有用户代理标头,某些 HTTP 服务器会返回错误。我们需要使用 Windows.Web.Http.Headers 命名空间中的类添加用户代理标头以避免这些错误。我们将此标头添加到 HttpClient.DefaultRequestHeaders 属性。

于 2015-06-29T00:32:17.807 回答