2017-11-06 2 views
1

Die URL, die ich aus wie folgt aussieht, etwas bekommen muss passieren:Wie URL Query-String-Parameter mit Anfragen

https://example.com//report.php?file=MyFile&params=query=QueryMyFile^SomeParam=x^SomeOtherParam=y^AnotherOne=z

Ich möchte requests verwenden, um die params zu passieren; etwas in der Art von:

base_url = 'https://example.com//report.php' 
params = 
{ 'SomeParam': x, 
    'SomeOtherParam': y, 
    'AnotherOne': z 
} 

my_file = requests.get(base_url, params=params) 

Wie kann ich das erreichen?

Antwort

2

Sie akzeptieren sie alle in eine Abfrage namens "Params".

Das ist ein nicht standardmäßiger Weg, um Parameter zu senden, also gibt es keine eingebaute Möglichkeit, das mit requests zu tun. Sie müssen die Schlüssel und Werte mit '^' Zeichen manuell verbinden.

+0

Hmm, das ist scheiße. Was ist mit der Verwendung von 'urllib'? – Petar

+0

Nicht einmal 'urllib.parse.urlencode() 'hilft hier, da Sie kein anderes Trennzeichen angeben können. –

+0

Nein. Tadeln Sie, wer auch immer die 'report.php' entworfen hat. – wim

-2

Aus den Anfragen docs ..

payload = {'key1': 'value1', 'key2': 'value2'} 
r = requests.get('http://httpbin.org/get', params=payload) 
0

Die Struktur Ihrer params Daten in json Stil ist, würde ich auch versuchen, es auf diese Weise zu tun, statt:

import json 
    import requests 

    params = { 'SomeParam': x, 
    'SomeOtherParam': y, 
    'AnotherOne': z } 

    params = json.dumps(params, separators=('^', '=')) 
    params = params[1:-1] #remove first and last curly brackets 
    my_file = requests.get(base_url+params) 

So etwas würde machen.

Verwandte Themen