【问题标题】:Gravatar json profile request 403 forbiddenGravatar json配置文件请求403被禁止
【发布时间】:2015-04-15 17:45:22
【问题描述】:

我目前正在通过编写 C# 应用程序来使用 gravatar api。

首先,我尝试获取我的头像。它奏效了。

之后,我尝试获取个人资料二维码。它奏效了。

现在,我想以 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())
{
    // ...

有人知道我的做法有什么问题吗?

【问题讨论】:

    标签: c# json http-status-code-403 gravatar


    【解决方案1】:

    在这种情况下,它不喜欢您不传递 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 之类的工具可能会对您有所帮助,以便您可以尝试重现浏览器的行为。

    【讨论】:

    • 您不必将其转换为HttpWebRequest,您可以手动将其添加到WebRequest.Headers
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 2019-11-12
    • 2014-10-31
    • 2016-11-24
    • 2012-02-03
    相关资源
    最近更新 更多