Запрос профиля Gravatar json 403 запрещен

В настоящее время я играю с gravatar api, пишу приложение на С#.

Во-первых, я попытался получить свою граватарную картинку. Это сработало.

После этого я попытался получить QR-код профиля. Это сработало.

Теперь я хочу получить информацию о моем профиле в формате json. Я следовал указаниям, данным на веб-сайте, и написал следующее:

using (var web = new HttpClient())
{
    using (var response = await web.GetAsync("http://www.gravatar.com/205e460b479e2e5b48aec07710c08d50"))
    {
        // ...

Каждый раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке 403. Но когда я копирую и вставляю URL-адрес в свой веб-браузер или выполняю wget, он работает нормально и возвращает ожидаемый результат.

Я также пробовал с этим, но я тоже получаю ошибку:

var request = WebRequest.Create("http://www.gravatar.com/205e460b479e2e5b48aec07710c08d50.json");
using (var response = request.GetResponse())
{
    // ...

Есть ли у кого-нибудь представление о том, что не так на моем пути?


person paulinodjm    schedule 14.02.2015    source источник


Ответы (1)


В этом случае не нравится, что вы не передаете HTTP-заголовок User-Agent (и я не думаю, что вы можете это сделать как 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, чтобы вы могли попытаться воспроизвести поведение своего браузера.

person Dasanko    schedule 14.02.2015
comment
Вам не нужно приводить его к HttpWebRequest, вы можете добавить его к WebRequest.Headers вручную. - person rocky; 25.01.2017