- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
根据GAE fetch documentation , cookie 不使用重定向处理:
Cookies are not handled upon redirection. If cookie handling is needed, set follow_redirects to False and handle both cookies and redirects manually.
因此,我正在尝试实现手动解决方案:
page = urlfetch.Fetch(
url = url,
payload = form_data,
method = urlfetch.POST,
headers = headers,
follow_redirects = False,
deadline = 60)
cookies = ''
while page.status_code == 302:
url = page.headers.get('location')
if page.headers.get('set-cookie'):
cookies = page.headers.get('set-cookie')
headers['cookie'] = cookies
page = urlfetch.Fetch(
url = url,
method = urlfetch.GET,
headers = headers,
follow_redirects = False,
deadline = 60)
if page.status_code == 200 and page.content:
self.response.out.write(page.content)
但它并没有像预期的那样工作。看来我不见了 some cookies :
header_msg An instance of httplib.HTTPMessage containing the response headers. If there may be multiple headers with the same name (for example, Set-Cookie headers), call header_msg.get_headers(header_name) to retrieve the values as a list.
但是我应该如何使用那个header_msg?
最佳答案
如果我理解这个问题,您想从每个响应中收集(并累积传递)cookie,但是带有 follow_redirects=True 的 URLFetch 只返回最后一个响应中的 cookie。此外,默认行为不会实现 cookie jar,这将导致后面的请求使用与先前响应中的 Set-Cookie
相对应的正确 Cookie
header 发送。据推测,最初的 POST 是一个登录表单,它重定向到一个需要 cookie 的页面,这种方案不能与这些限制一起使用。
为此,您的代码很接近,但 cookies = page.headers.get('set-cookie')
会在每次请求后清除之前收集的 cookie。这应该会更好:
page = urlfetch.Fetch(
url = url,
headers = headers,
follow_redirects = False)
cookies = []
while page.status_code == 302:
url = page.headers.get('location')
if page.headers.get('set-cookie'):
cookies.extend(page.header_msg.getheaders('set-cookie'))
headers['cookie'] = '; '.join(cookies)
page = urlfetch.Fetch(
url = url,
method = urlfetch.GET,
headers = headers,
follow_redirects = False)
if page.status_code == 200 and page.content:
self.response.out.write(page.content)
一些注意事项:
Location
是相对路径,您需要修复 url
。Set-Cookie
header 不仅仅是键=值(例如,它有过期时间),您将需要解析 header 值,以便您可以只发送键/值对。查看Cookie帮助解析的库。Set-Cookie
,此代码将愉快地发送重复的 cookie。关于python - 如何使用 urlfetch 获取所有 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884618/
这是我尝试通过 Google 电子表格图表上的 JavaScript 工具运行的函数,该函数当前在 4 个不同的网站上运行,在此示例中: $id 是从我的电子表格单元格 (belacoin) 导入的值
我在 GAE 1.7.4 上使用 urlfetch API...我尝试通过以下方式进行获取: result=urlfetch(http://localdomain:8080/static/tabcon
我有一个 App Engine 应用程序尝试获取长网址。经过实验后,似乎由于某种原因,App Engine 将获取的 url 长度限制为 2047。这是错误的堆栈跟踪: File "/base/dat
我正在使用 Appengine-Java 开发一个网络应用程序。我是这个领域的新手,我很难过。 我目前正在使用循环。每个循环从列表中访问某个 isbn,然后通过 urlFetch 获取书籍的详细信息。
如果我使用以下代码: result = urlfetch.fetch(url=url_get_devices, payload='',
我正在尝试将位于 Blobstore 中的文件从 GAE 发布到另一个 HTTP 服务 (virustotal)。 当前代码段适用于小文件(1 - 2 mb): import base64 impor
我正在尝试在谷歌应用引擎应用程序中向 python 中的粒子服务器发出请求。 在我的终端中,我可以简单而成功地完成请求,请求如下: res = requests.get('https://api.pa
我注意到在 Java 实现中似乎存在对 urlfetch 的同时异步调用的限制(如此处所述:http://code.google.com/appengine/docs/java/urlfetch/ov
在我为 GAE 编写的一些代码中,我需要定期对另一个系统上的 URL 执行 GET,本质上是“ping”它,如果请求失败、超时或成功,我并不十分担心。 因为我基本上想“即发即忘”而不是通过等待请求来减
我想知道 Google App Engine URL Fetch Python API不支持访问具有凭据的 URL: http://username:password@www.domain.com/
我正在尝试通过 Google Apps 脚本运行 MongoLab(基于 REST 的 MongoDB 访问)查询。从记录器生成的 URL 如下所示 https://api.mongolab.com/
是否可以更改与 Google Apps 脚本一起使用的用户代理字符串 UrlFetchApp.fetch要求? This discussion从 2010 年开始暗示 Google Apps Scri
目标是运行大约 10,000 行链接。确定页码 > 3 的页码并突出显示第一列。我已经完成了所有这些,但问题是 Url Fetch 花费的时间太长,我遇到了最大运行时间错误。无论如何,我可以加快这段代
我已经用 Python 构建了一个由 Node 应用程序获取的 App 引擎 API。该 API 按预期工作(1)生产中的获取和发布请求以及(2)开发中的获取请求。它在开发中的发布请求上失败,我可以使
使用 Google App Engine,我试图从包含一个 csv 文件的 URL 中 urlfetch 一个 gzip 文件。 最终我想在我的网页上输出csv文件的内容。 我现在有以下代码: #!/
嘿。我对 App Engine 很陌生。我创建了一个基于 Web 的 Twitter 应用程序,该应用程序现在运行在 App Engine 上,并且我不断地达到我的 CPU 超过配额限制。我做了一些分
我有两个正在运行的 App Engine 应用程序实例,我想通过 Restful 接口(interface)进行通信。一旦其中一个的数据更新,它就会调用第二个的 Web 钩子(Hook),后者将为自己
我正在尝试加载一个重定向到自身的 url。我假设它正在加载一个 cookie 并正在寻找它,但它从来没有看到它,所以存在这个无限循环的请求。 我试过 urllib2、urlfetch 和 httpli
根据GAE fetch documentation , cookie 不使用重定向处理: Cookies are not handled upon redirection. If cookie han
我有一个 Google Appengine 应用程序使用 urllib2 POST 从另一台服务器请求页面。我最近在另一台运行 Apache2 的服务器上启用了 gzip 压缩,Appengine 页
我是一名优秀的程序员,十分优秀!