HttpError 400:访问 Google Extended Trends API for Health 时出现错误请求

Posted

技术标签:

【中文标题】HttpError 400:访问 Google Extended Trends API for Health 时出现错误请求【英文标题】:HttpError 400:Bad request when accessing Google Extended Trends API for Health 【发布时间】:2018-02-26 23:13:42 【问题描述】:

我已获得使用专用 Google Extended Trends API for Health 进行研究的许可。 我想训练自己使用该工具,所以首先在 Google 提供的 Google Extended Trends API for Health-Getting Started Guide.pdf 文件中实现示例 python 代码。 在我看来,这段代码应该可以工作。如果我得到它的工作,我可以开始修改它来创建我自己的请求。如果我让它工作......

我正在使用 Python 3.6.3

我在这里看到了类似的帖子: Google Extended Trends API for Health in python 但他们没有得到答案。

这是我在运行代码时得到的完整回溯:

Traceback(最近一次通话最后一次):

文件“C:\Google 趋势\Google Trends_Health API\Google 趋势示例代码.py”,第 156 行,在 main() 中

文件“C:\Google 趋势\Google Trends_Health API\Google 趋势示例代码.py”,第 142 行,主频 = 'day')

GetQueryVolumes res = req.execute () 中的文件“C:\Google 趋势\Google Trends_Health API\Google 趋势示例代码.py”,第 104 行

文件“C:\Program Files\Python36\lib\site-packages\oauth2client_helpers.py”,第 133 行,在 positional_wrapper 中 返回包装(*args,**kwargs)

文件“C:\Program Files\Python36\lib\site-packages\googleapiclient\http.py”,第 839 行,正在执行中

引发 HttpError(resp, content, uri=self.uri) googleapiclient.errors.HttpError:https://www.googleapis.com/trends/v1beta/timelinesForHealth?terms=flu&terms=cough&time.startDate=2011-01-01&time.endDate=2015-01-01&timelineResolution=day&geoRestriction.region=US- MA&key=是的,就像我在这里展示的那样!&alt=json 返回“错误请求”>

我在回溯中看到它正在从 OAuth 文件夹调用 helpers.py 模块,所以想知道这一点:400 (Bad Request) when requesting GA API 但指南说:“注意:此 API 不需要 OAuth2。”

我还可以在仪表板上看到请求正在注册,因此它一定与 JSON 请求的实际格式有关。我不是 JSON 专家,所以我可能需要帮助。 从上面提取的请求是: https://www.googleapis.com/trends/v1beta/timelinesForHealth?terms=flu&terms=cough&time.startDate=2011-01-01&time.endDate=2015-01-01&timelineResolution=day&geoRestriction.region=US-MA&key=APIKEY&alt=json

关于出了什么问题的任何线索?我尝试从 v1beta 更改 API 版本,这给了我一个错误版本名称的特定错误,所以不是版本名称有问题。 我似乎找不到任何明确的答案。

谢谢

【问题讨论】:

【参考方案1】:

经过一番尝试,我意识到 json 字符串的格式很好,这只是 API 不想在那个时间范围内给出那个分辨率(天)的问题。我将时间范围缩短到 time.startDate=2015-01-01&time.endDate=2015-12-31 并且有效。 我想 API 方法的一些指南可能会有所帮助。 尽管如此,通过反复试验,我应该能够弄清楚我能做什么,不能做什么。

【讨论】:

【参考方案2】:

我现在面临着几乎相同的问题。我认为示例代码中的罪魁祸首是它一次要求太多数据点(即大于 2,000,这是当前限制)。数据点计算为number of terms * time * resolution。因此,当您更改时间范围时,请求的数据点数量会减少,并且调用会成功。

希望这对未来的用户有所帮助!

【讨论】:

以上是关于HttpError 400:访问 Google Extended Trends API for Health 时出现错误请求的主要内容,如果未能解决你的问题,请参考以下文章

错误:(gcloud.sql.connect)HTTPError 400:传入请求包含无效数据

requests.exceptions.HTTPError:400 客户端错误:对 url 的错误请求:https://accounts.spotify.com/api/token

urllib2.HTTPError: HTTP Error 400: Bad Request

源 GraphQL API:HTTP 错误 400 错误请求

HTTPError:HTTP 错误 403:在 Google Colab 上被禁止

来自 Python AppEngine 的 Google Url Shortener API:HTTPError:HTTP 错误 403:禁止