【发布时间】:2014-07-29 03:45:08
【问题描述】:
更新:如果有人可以提供帮助,请:Google 正在等待他们的错误跟踪工具上有关此问题的输入和示例。如果您对此问题有可重现的步骤,请分享到:https://code.google.com/p/googleappengine/issues/detail?id=10937
我正在尝试使用 Google App Engine 后端从 StackExchange API 获取数据。您可能知道,StackExchange 的一些 API 是特定于站点的,要求开发人员针对用户注册的每个站点运行查询。
所以,这是我从这些网站获取时间线数据的后端代码。 feed_info_site 变量保存 StackExchange 站点名称(例如 'security'、'serverfault' 等)。
data = json.loads(urllib.urlopen("%sme/timeline?%s" %
(self.API_BASE_URL, urllib.urlencode({"pagesize": 100,
"fromdate": se_since_timestamp, "filter": "!9WWBR
(nmw", "site": feed_info_site, "access_token":
decrypt(self.API_ACCESS_TOKEN_SECRET, self.access_token), "key":
self.API_APP_KEY}))).read())
for item in data['items']:
... # code for parsing timeline items
在除 Stack Overflow 之外的所有站点上运行此查询时,一切正常。奇怪的是,当 feed_info_site 变量设置为 'stackoverflow' 时,我从 Google App Engine 收到以下错误:
HTTPException: Invalid and/or missing SSL certificate for URL:
https://api.stackexchange.com/2.2/me/timeline?
filter=%219WWBR%28nmw&access_token=
<ACCESS_TOKEN_REMOVED>&fromdate=1&pagesize=100&key=
<API_KEY_REMOVED>&site=stackoverflow
当然,如果我在 Safari 中运行相同的查询,我会从 API 中得到我期望的 JSON 结果。所以问题出在 Google 的 URLfetch 服务上。我在 Stack Overflow 上发现了几个与类似 HTTPS/SSL 异常相关的主题,但没有接受的答案解决了我的问题。我尝试删除 cacerts.txt 文件。我也尝试使用validate_certificate=False 拨打电话,但没有成功。
我认为这个问题与 HTTPS/SSL 没有严格的关系。如果是这样,您如何解释更改单个 API 参数会导致请求失败?
【问题讨论】:
-
自 v1.9.7 以来可能已由 Google 修复,但我必须检查它。 code.google.com/p/googleappengine/issues/detail?id=10937
-
我有一个非常相似的问题,但是当访问browserid.org/verify 任何有反馈的人时,将不胜感激!很高兴知道如何在不禁用 SSL 证书的情况下执行此操作。
-
好吧,我的特殊问题通过将 browserid.org/verify 替换为 verifier.login.persona.org/verify 得到了解决
-
想知道您是否已经在响应标头中查找过任何内容。
-
您还在直接使用
urllib.open还是urlfetch.fetchAPI?我遇到过这样的情况,urlfetch一定在幕后做了一些额外的魔法,因为它起作用了,而urllib没有。
标签: google-app-engine ssl urlfetch