0

我试图使用来自应用引擎的 urlfetch 请求 https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=[http://www.my-website.dk/]&key=[my-key] 但它是不工作。

当我访问它并将 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)
4

2 回答 2

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))
于 2011-09-09T07:23:57.607 回答
0

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

于 2011-09-08T16:55:24.420 回答