How to prevent python requests from percent encoding my URLs?
Question: I'm trying to GET an URL of the following format using requests.get() in
python:

[http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel](http://api.example.com/export/?format=json&key=site%3adummy+type%3aexample+group%3awheel)

    
    
    #!/usr/local/bin/python
    
    import requests
    
    print(requests.__versiom__)
    url = 'http://api.example.com/export/'
    payload = {'format': 'json', 'key': 'site:dummy+type:example+group:wheel'}
    r = requests.get(url, params=payload)
    print(r.url)
    

However, the URL gets percent encoded and I don't get the expected response.

    
    
    2.2.1
    http://api.example.com/export/?key=site%3Adummy%2Btype%3Aexample%2Bgroup%3Awheel&format=json
    

This works if I pass the URL directly:

    
    
    url = http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel
    r = requests.get(url)
    

Is there some way to pass the the parameters in their original form - without
percent encoding?

Thanks!


Answer: It is not good solution but you can use `string`:

    
    
    r = requests.get(url, params='format=json&key=site:dummy+type:example+group:wheel')
    

* * *

BTW:

    
    
    payload = {'format': 'json', 'key': 'site:dummy+type:example+group:wheel'}
    
    payload_str = "&".join("%s=%s" % (k,v) for k,v in payload.items())
    # 'format=json&key=site:dummy+type:example+group:wheel'
    
    r = requests.get(url, params=payload_str)
    

