Python-requests-Modul url-codieren
Ich versuche zu senden, json als parameter durch eine get-Methode für eine api, fand ich, dass die url, an die es ist zu schlagen, ist etwas anders als die ursprüngliche url. Einige ":%20" text zwischen den url. Nicht sicher, warum dieser Unterschied kommt, Kann jemand helfen
Original URL: http://258.198.39.215:8280/areas/0.1/get/raj/name?jsonRequest=%7B%22rajNames%22%3A%5B%22WAR%22%5D%7D
My URL : http://258.198.39.215:8280/areas/0.1/get/raj/name?jsonRequest=&%7B%22rajNames%22:%20%22WAR%22%7D
Python-code:
headers = {'Accept': 'application/json','Authorization': 'Bearer '+access_token}
json = {'rajNames':'WAR'}
url = 'http://258.198.39.215:8280/areas/0.1/get/raj/name?jsonRequest='
r = requests.get(url, params=json.dumps(json),headers=headers)
print _r.url
Räume sind in Ordnung, in JSON-Daten und keinen Einfluss auf die Dekodierung; warum denkst du ist es ein problem?
Kann u vergleichen Sie das original & meine url? Sie sind anders, will ich die exakt gleiche url als original..
Kann u vergleichen Sie das original & meine url? Sie sind anders, will ich die exakt gleiche url als original..
InformationsquelleAutor min2bro | 2015-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Leerzeichen sind nicht das problem; Ihre Methode der Generierung der Abfrage-string ist, wie ist Ihre aktuelle JSON-payload.
Beachten Sie, dass Ihr original-URL hat eine verschiedenen JSON-Struktur:
Den
rajNames
parameter ist eine Liste, nicht einer einzelnen Zeichenfolge.Weiter
requests
sieht alle Daten inparams
als neue parameter, so dass es verwendet werden&
zur Abgrenzung von der vorherigen parameter. Verwenden Sie ein Wörterbuch aus, und lassen Sie die?jsonRequest=
Teilrequests
zu generieren:Demo:
Können Sie noch beseitigen die verwendeten Räume in der JSON-Ausgabe von
json.dumps()
durch die Einstellung derseparators
argument(',', ':')
:aber ich bezweifle, dass wirklich gebraucht wird.
InformationsquelleAutor Martijn Pieters