2011-08-16 75 views
1

我在我的Windows計算機上測試Google App Engine應用程序,本地運行localhost:8084。當我瀏覽我的應用程序時,Fiddler2顯示了我的所有活動,但是當使用urlfetch.fetch()請求外部url時,它根本不會顯示在Fiddler中,即使使用http而不是https地址,並且成功狀態碼200在響應中。來自Google App Engine的urlfetch.fetch()未顯示在Fiddler2中

我需要做些什麼才能讓Google App Engine的urlfetch.fetch()請求顯示在Fiddler2中?

回答

5

我的理解是Fiddler2作爲HTTP代理運行;瀏覽器請求會通過此代理而不是直接訪問Internet資源。這允許Fiddler2捕獲有關請求和響應的信息。

根據Fiddler2 docs,「您可以配置任何接受HTTP代理服務器以通過Fiddler運行的應用程序,以便調試其流量」。所以我認爲您需要將URLFetch API調用更改爲使用代理,並提供Fiddler URL和端口。但是,URLFetch documentation並未指定如何執行此操作。您可以使用this question中指定的urllib2。

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