我目前正在使用gravatar api,编写一个C#应用程序。
首先,我试图获得我的gravatar图片。它奏效了。
之后,我试图获取个人资料QR码。它奏效了。
现在,我想在json中检索我的个人资料信息。我按照网站给出的指示,写了这个:
using (var web = new HttpClient())
{
using (var response = await web.GetAsync("http://www.gravatar.com/205e460b479e2e5b48aec07710c08d50"))
{
// ...
每次尝试时,都会收到错误403。 但是当我在我的网络浏览器中复制粘贴网址时,或者如果我做了一个wget,它可以正常工作,返回预期的结果。
我也试过这个,但我也得到了错误:
var request = WebRequest.Create("http://www.gravatar.com/205e460b479e2e5b48aec07710c08d50.json");
using (var response = request.GetResponse())
{
// ...
有人知道我的方法有什么问题吗?
答案 0 :(得分:2)
在这种情况下,它不喜欢您没有传递User-Agent HTTP标头(我认为您不能将其作为WebRequest,因此我们将其转换为HttpWebRequest):
var request = (HttpWebRequest)WebRequest.Create("http://www.gravatar.com/205e460b479e2e5b48aec07710c08d50.json");
request.UserAgent = "Whatever user agent you'd like to use here...";
using (var response = request.GetResponse())
{
// ...
编辑:将来可能会帮助您使用Fiddler之类的东西,以便您可以尝试重现浏览器的行为。