对于 POST 请求,我收到了text/html格式的响应,响应正文包含以下信息:
oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXX&oauth_token_secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback_confirmed=true
我提出了这个请求System.Net.Http.HttpClient
,我可以用FormUrlEncodedMediaTypeFormatter
as读取响应,FormDataCollection
但结果证明默认情况下FormUrlEncodedMediaTypeFormatter
只支持application/x-www-form-urlencoded格式。因此,我使用以下代码解决了这个问题:
using (OAuthHttpClient client = new OAuthHttpClient(creds)) {
var response = await client.PostAsync(requestUri, new EmptyContent());
var formatter = new FormUrlEncodedMediaTypeFormatter();
formatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
var result = await response.Content.ReadAsAsync<FormDataCollection>(new List<MediaTypeFormatter>() { formatter });
}
这里的问题是:
响应提供者(在这种情况下是 Twitter)是否通过将此响应作为text/html发送而做错了,还是应该默认FormUrlEncodedMediaTypeFormatter
支持text/html类型?