Having a space in header element for posting

I'm trying to post to a server using the following script:
```
import requests                                                                                    
                                                                                                              
data = {                                                                                                      
  'query': 'GetProcess',
  'getFrom': '2018-12-06 10:10:10.000',                                                                     
}                                                                                                                                                                                               
response = requests.post('http://localhost/monitor', data=data)                                           
```
I cannot find where exactly, but the space character in the `getFrom` element is being replaced with a `+`: `'2018-12-06+10:10:10.000'`

 This doesn't match the syntax SQL expects on our server, so the query fails. 

I read here (https://stackoverflow.com/a/12528097) that setting the Content-type might help. I tried `text/html`, `text/plain`, `application/json`, and nothing seems to change. 

Interestingly, the following (equivalent?) bash command succeeds:
` curl -d 'query=GetProcess&getFrom=2018-12-06 10:10:10.000' localhost/monitor`

I'm looking for a way to make my server receive `"getFrom" : "2018-12-06 10:10:10.000"` in the header. Thank you in advance :)

Hi there! Thanks for opening this issue. Unfortunately, it seems this is a request for help instead of a report of a defect in the project. Please use [StackOverflow](https://stackoverflow.com) for general usage questions instead and only report defects here.

I looked deeper into this, and I found the culprit: at line 105 of models.py, the `urlencode` function is the one that adds the `+` sign. Unless I am mistaken, this function should not be used to encode data.

In other words, if I add these prints near line 105 of models.py:
`print("Result:", result)`
`print("encoded:", urlencode(result, doseq=True))`
`return urlencode(result, doseq=True)`

I get this output: 
`Result: [(b'getFrom', b'2018-12-10 06:10:10.000'), (b'query', b'GetProcess')]`
`encoded: getFrom=2018-12-10+06%3A10%3A10.000&query=GetProcess`
(notice the `+` in encoded)

Hi @felleg,

This is the default behavior for the data arg using a dict, as stated in the [getting started docs](http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests).

> Typically, you want to send some form-encoded data — much like an HTML form. To do this, simply pass a dictionary to the data argument. Your dictionary of data will automatically be form-encoded when the request is made

As Sigmavirus24 stated, this isn’t the right place for general usage questions. We’d appreciate it if you directed further inquiries to Stackoverflow. Thanks!


I'll post the solution in case anyone is looking for the answer: https://stackoverflow.com/a/53710004/5565172
The link I was really looking for in the docs was this one: http://docs.python-requests.org/en/master/user/advanced/#prepared-requests
Thank you for your patience