App引擎urlfetch问题

时间:2011-09-08 16:49:04

标签: python google-app-engine urlfetch

我试图使用urlfetch请求https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=[http://www.my-website.dk/]&key=[my-key]来自app引擎,但它无法正常工作。

当我访问它并将my-url硬编码到请求中时,请执行以下操作: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)

2 个答案:

答案 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))

答案 1 :(得分:0)

有效负载仅适用于POST / PUT请求。对于GET,您的参数需要成为URL的一部分