C# 调用跨域URL时,HttpWebRequest响应始终为text/html

C# 调用跨域URL时,HttpWebRequest响应始终为text/html,c#,rest,cross-domain,C#,Rest,Cross Domain,我使用HttpWebRequest从跨域()获取json结果。我已经将ContentType和Accept设置为application/json,但我总是得到text/html响应。预期结果是JSON string result = string.Empty; var request = (HttpWebRequest)WebRequest.Create("https://www.facebook.com/plugins/post/oembed.json/?url=xxxxxx"); requ

我使用HttpWebRequest从跨域()获取json结果。我已经将ContentType和Accept设置为application/json,但我总是得到text/html响应。预期结果是JSON

string result = string.Empty;
var request = (HttpWebRequest)WebRequest.Create("https://www.facebook.com/plugins/post/oembed.json/?url=xxxxxx");

request.ContentType = "application/json; charset=utf-8";
request.Accept = "application/json";
request.Method = "POST";                

var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
    result = streamReader.ReadToEnd();
}

我认为您还需要在请求中设置一个浏览器代理,以获得预期的结果,而不是Facebook中嵌入的HTML

比如:

request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";

您是否尝试设置
请求。方法
以获取?@swatsonpicken已尝试,但结果与htmlPlease相同。请编辑/更新您的问题,以添加对响应的HTTP状态代码的提及。最可能发生的情况是,对您的请求的响应不是200 OK,而是4xx或5xx错误消息,在这种情况下,响应正文将是HTML错误页,而不是如果请求成功,您将获得的预期JSON。@sideshowbarker响应状态为OK。当我在浏览器中复制粘贴相同的url时,结果是JSONOK,然后我的下一个建议是查看响应正文,看看它包含的内容是否正常工作。谢谢。它是否能在所有浏览器(包括ipadIt)中工作并不重要,因为它用于服务器端。我猜Facebook正在验证他们回复中的用户代理,以防止机器人和蜘蛛。谢谢你的回答