Проблема с движком приложения - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь запросить https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=[http://www.my-website.dk/]&key=[my-key], используя urlfetch из движка приложения, но он не работает.

Когда я получаю к нему доступ и жестко кодирую 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 ]

2 голосов
/ 09 сентября 2011

Во-первых, при вызове urlfetch произошла ошибка, поскольку вы передаете в функцию два параметра.
Вы должны использовать % между двумя строками, чтобы передать в функцию только один параметр url.

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

Затем вы пытались urlencode второй URL?

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 голосов
/ 08 сентября 2011

полезная нагрузка применима только для запросов POST / PUT.Для GET ваши параметры должны быть частью URL

...