2017-04-01 1 views
0

Ich mag ändern, um eine HTTP-Anfrage senden, aber ein Problem mit dem params hat, finden Sie meinen Code:warum Python die ursprünglichen Parameter

my_url="mysite.com/api" 
payload = {'start':"2017-04-01%2000:00:00",'end':"017-04-01%2023:59:59"} 
r=requests.get(my_url,params=payload) 
print r.request.url 

Die gesendete URL ist "mysite.com/api?start=2017-04-01%252000%3A00%3A00&end=2017-04-01%252023%3A59%3A59' wird die params verändert. Könnte mir jemand helfen?

+1

Sie versuchen, direkt mit Urls einer Bibliothek Interpretation einer URL zu kombinieren. Was ist die genaue Anfrage, die Sie senden möchten? – pshep123

Antwort

0

Python ist eine URL, die die Informationen für Sie kodiert. Bestimmte Zeichen sind während der HTTP-Übertragung nicht zulässig (da sie bestimmte Funktionen im Protokoll bedienen). Wenn Sie unzulässige Zeichen wie : und (Leerzeichen) verwenden möchten, können Sie sie per URL an %3A und kodieren. Die URL-Kodierung ist standardisiert, so dass Sie Ihre Informationen senden können (Post-Kodierung), dann wird ein Server sie empfangen und entschlüsseln, was dazu führt, dass sie Ihre ursprüngliche Nachricht erhalten.

Hier ist eine eingehende Analyse davon: https://www.thoughtco.com/encoding-urls-3467463

+0

Ich modifiziere die Parameter wie Nutzlast = {'Start': "2017-04-01% 252000% 3A00% 3A00", "Ende": "017-04-01% 252023% 3A59% 3A59"}, kann immer noch nicht funktionieren – Melody

+0

Anfragen werden die Sonderzeichen automatisch kodieren, und ich löste dies, indem Sie sie manuell aufheben und dann die Anfrage erneut senden – Melody

Verwandte Themen