62,243
社区成员




var httpClient = new HttpClient();
string url="http://demo.com/api/demo";
var dic = new Dictionary<string, string>();
//填充Dictionary
HttpContent httpContent = new FormUrlEncodedContent(dic);
//FormUrlEncodedContent默认ContentType 为application/x-www-form-urlencoded
//httpContent 是请求的Content信息,不对应Response信息,修改不正确会导致服务端获取不到Form数据
var taskP = httpClient.PostAsync(url, httpContent );//POST
var taskG = httpClient.GetAsync(url);//GET
//问题在这里,什么时候设定响应的ContentType
HttpResponseMessage rmP=taskP.Result;
HttpResponseMessage rmG=taskG.Result;
//HttpResponseMessage 有个Header参数,但貌似不是设定响应类型的
//没搞懂Response响应步骤是如何的,是获取到HttpResponseMessage已经代表整个完整的响应了
//还是通过Content进行读取时才从服务端获取实际的响应数据
//但根据下面的测试设定无效,似乎可以推断在获取HttpResponseMessage时服务器已经给出响应结果了
var responseContent = rmP.Content;
responseContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/xml");//这步再设定ContentType 已经不起效果
responseContent.ReadAsStringAsync().Result;//这边永远返回的是json格式字符串
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml“);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/json“);