来自Google App Engine的urlfetch.fetch()未显示在Fiddler2中

时间:2011-08-16 08:01:03

标签: google-app-engine fiddler urlfetch

我正在我的Windows计算机上测试Google App Engine应用程序,在localhost:8084上本地运行。当我浏览我的应用程序时,Fiddler2会显示我的所有活动,但是当使用urlfetch.fetch()请求外部URL时,它根本不会显示在Fiddler中,即使使用http,而不是https地址,并且成功响应中的状态代码200。

我需要做些什么才能让来自Google App Engine的urlfetch.fetch()请求显示在Fiddler2中?

2 个答案:

答案 0 :(得分:5)

我的理解是Fiddler2作为HTTP代理运行;浏览器请求通过此代理而不是直接访问Internet资源。这允许Fiddler2捕获有关请求和响应的信息。

根据Fiddler2 docs,“您可以配置任何接受HTTP代理的应用程序通过Fiddler运行,以便您可以调试其流量”。所以我认为您需要更改URLFetch API调用以使用代理,提供Fiddler URL和端口。但是,URLFetch documentation并未明确指定如何执行此操作。您可以使用this question中指定的urllib2。

答案 1 :(得分:1)

Irussell一般都是对的,但我想让答案更具体。

由于Google AppEngine生产环境不支持代理,因此开发引擎也不直接支持代理。似乎克服此限制的唯一方法是修改AppEngine开发服务器的代码。

您必须通过添加以下行来修改urlfetch_stub.py文件:

connection = connection_class('127.0.0.1', 8888)

full_path = protocol + "://" + host + full_path

您可以在我的博文Use Fiddler to debug urlfetch requests in Google AppEngine

中找到详细说明