对于POST请求,我收到了 text / html 格式的回复,而回复正文包含以下信息:
组oauth_token = XXXXXXXXXXXXXXXXXXXXXXXXX&安培; oauth_token_secret = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&安培; oauth_callback_confirmed =真
我通过System.Net.Http.HttpClient
提出了此请求,我可以通过FormUrlEncodedMediaTypeFormatter
将FormDataCollection
作为FormUrlEncodedMediaTypeFormatter
阅读,但事实证明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 });
}
仅支持应用/默认情况下,x-www-form-urlencoded 格式。所以,我使用以下代码解决了这个问题:
FormUrlEncodedMediaTypeFormatter
这里的问题是:
响应提供者(在这种情况下是Twitter)是通过将此响应发送为 text / html 还是{{1}}支持 text / html 默认输入?
答案 0 :(得分:3)
你的问题是缺少一些关键信息,即requestUri默认返回的是什么,它是Web API服务还是外部API等。它似乎不是Web API,因为它返回“text / html”有点奇怪”
但FormUrlEncodedMediaTypeFormatter不支持从text / html格式化的事实绝对没问题。因为它为什么会这样? “application / x-www-form-urlencoded”实际上是一个键值字典,text / html是一种富媒体类型。
在Web API中,通过内容协商的工作方式,它会查看
因此,如果您在显示任何Web API操作时发出请求,它将返回text / xml(如果您没有手动调整连接)。
答案 1 :(得分:3)
我同意Filip的说法,这对于不正确的内容类型标题是一个很好的解决方法。
的Henrik