2011-09-08 56 views
0

我試圖請求https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=[http://www.my-website.dk/] & key = [my-key ]使用從應用程序引擎的urlfetch,但它不工作。應用引擎urlfetch問題

當我訪問它並硬編碼我的網址到這樣的請求:https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=http://www.my-website.dk/ & key = [my-key]工作正常,但是當我使用urlfetch.fetch(「https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=%s & key = [my-key]」時, 「http://www.my-website.dk」),它不工作,我也曾嘗試:

page_content = urlfetch.fetch(
     url="https://www.googleapis.com/pagespeedonline/v1/runPagespeed", 
     payload=params, 
     method=urlfetch.GET 
    ) 

,然後在有效載荷喜歡這個服務的參數:

params = urllib.urlencode({ 
     "url": page.link, 
     "key": "[my-key]" 
     }) 

但結果是一樣的,它不工作,服務給我HTTP狀態代碼400.我也嘗試添加urlfetch.fetch(u(「http:// ...」,page.link),但結果是一樣。

我編輯的代碼基於從systempuntoout櫃面任何人應該碰到了同樣的問題的答覆:

params = urllib.urlencode({ 
     "url": page.link, 
     "key": "AIzaSyAFpm6W_OmjQl33JC98mAPkvrdGmrR0i4Y" 
     }) 

     page_content = urlfetch.fetch("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?%s" % params) 
+0

您正在傳遞兩個參數來獲取。我認爲,想成爲% –

+0

請比「它不工作」更具體 - 幷包括您的實際代碼。 –

回答

2

首先,urlfetch調用有錯誤,因爲您要將兩個參數傳遞給該函數。
你應該使用兩個字符串之間的%來傳遞一個url參數給函數。

urlfetch.fetch("https://www.goo..e/v1/runPagespeed?url=%s&key=[my-key]" % 
               "http://www.my-website.dk") 

然後,你有沒有試過urlencode第二個網址?

import urllib 
your_url = {'url': 'http://www.my-website.dk/&key=[my-key]'} 
urlfetch.fetch("https://www.g../v1/runPagespeed?%s" % urllib.urlencode(your_url)) 
0

有效載荷僅適用於POST/PUT請求。對於GET,您的參數需要成爲URL的一部分