App Engine URLFetch -Problem
-
28-10-2019 - |
Frage
Ich versuche, https://www.googleapis.com/pagespeedonline/v1/runpageSpeed?url=zustellen funktioniert nicht.
Wenn ich darauf zugreife und my-url in die Anfrage wie folgt zugute kommt: https://www.googleapis.com/pageSpeedonline/v1/runpageSpeed?url=http://www.my-website.dk/&key= [my- Key] Es funktioniert gut, aber wenn ich urlfetch.fetch ("https://www.googleapis.com/pageSpeedonline/v1/runpageSpeed?url=%s&key=?key-ey-Key] verwende, "http: // www. My-Website.dk ") Es funktioniert nicht, ich habe auch versucht:
page_content = urlfetch.fetch(
url="https://www.googleapis.com/pagespeedonline/v1/runPagespeed",
payload=params,
method=urlfetch.GET
)
und dann die Parameter in der Nutzlast wie folgt bedienen:
params = urllib.urlencode({
"url": page.link,
"key": "[my-key]"
})
Das Ergebnis ist jedoch das gleiche, es funktioniert nicht und der Dienst gibt mir den HTTP -Statuscode 400. Ich habe auch versucht, URLFetch.fetch (u ("http: // ...", Seite.link) hinzuzufügen, aber das Ergebnis ist das gleiche .
Ich habe den Code basierend auf der Antwort von systempuntoout bearbeitet, falls jemand auf dasselbe Problem stoßen sollte:
params = urllib.urlencode({
"url": page.link,
"key": "AIzaSyAFpm6W_OmjQl33JC98mAPkvrdGmrR0i4Y"
})
page_content = urlfetch.fetch("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?%s" % params)
Lösung
Zuerst die urlfetch
Call hat einen Fehler, da Sie zwei Parameter an die Funktion übergeben.
Sie sollten die verwenden %
zwischen den beiden Zeichenfolgen, um nur einen URL -Parameter an die Funktion zu übergeben.
urlfetch.fetch("https://www.goo..e/v1/runPagespeed?url=%s&key=[my-key]" %
"http://www.my-website.dk")
Dann haben Sie versucht Urlencode die zweite 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))
Andere Tipps
Die Nutzlast gilt nur für Post-/Put -Anfragen. Für Get müssen Ihre Parameter Teil der URL sein