plus character in url not working

My url is like this 
` http://api.example.com/user/jhon+doe?field=full&key=somestring `
After I making request, when I print the url , I only get `http://api.example.com/user/jhon` which is incorrect and it's return error from api. 

How can I request url with plus character? 

My guess is that the issue is not with the library but your api. Your api is not able to translate `+` into valid user

Hey @Andriuskislas, thanks for opening this ticket. I can't seem to reproduce the path dropping in 2.12.4 with the information supplied above. However, I think I have an idea of what you're hitting.

First, which version of requests are you using? URIs that I'm passing with a + character seem to be unaffected from our end, so I'm wondering if you're hitting a redirect which isn't parsing the supplied URI correctly on the server side.

`+` is a reserved character, that should represent a space. If you're intending to pass it as a literal `+` character, you'll likely want to encode it as `%2B` instead.

If you could supply a more detailed repro, we can take a deeper look.

@moin18 , No my api endpoint is fine. When I hit the url from browser it returns correct data. 

@nateprewitt , Thank you. Firstly my requests version is 
```
>>> req.__version__
'2.12.4'
```
Here is my encoded try 
```
url = "http://api.example.com/user/jhon%2Bdoe?field=full&key=somestring"
r = req.get(url)
r.url # output: http://api.example.com/user/jhon 

``` 
without encoding 
```
url = "http://api.example.com/user/jhon+doe?field=full&key=somestring"
r = req.get(url)
r.url # output: http://api.example.com/user/jhon
```
Also tried with encoding whole url ```http%3A%2F%2Fapi.example.com%2Fuser%2Fjhon%2Bdoe%3Ffield%3Dfull%26key%3Dsomestring``` but request didn't made. 


Thanks @Andriuskislas, url encoding should only be used for unicode characters, or uses of reserved characters for something other than their assigned meaning, which is why the last example isn't routing.

I can use a variant of your example above on a different server, and it leaves the + unchanged. That points pretty clearly to this being a server behaviour rather than something in Requests.

```python
>> url = 'http://httpbin.org/get+hello'
>> r = requests.get(url)
>> r.url
'http://httpbin.org/get+hello'
```

At this point, it feels like this is probably something better suited for Stackoverflow so we're not bombarding everyone watching issues on Requests.

Your output above is reassuring my redirect hunch, so here's one more test to perform. If you can check the output of `r.history`, that would be helpful. If it's anything other than `[]`, check what `r.history[0].url` is and compare that value to `r.request.url`. If they're different, this is definitely something happening server side.

If that's the case, would you mind opening an issue on https://stackoverflow.com and posting the link here so we have a paper trail? I'll follow up over there.

@Andriuskislas I would bet that @nateprewitt is correct about redirects being the root cause here. You can also tell requests not to follow them by passing `allow_redirects=False` to your request. It's plausible the server you're talking to is redirecting based on something like User-Agent. Either way, @nateprewitt's suggestion of asking a question on StackOverflow is correct. This isn't a general support forum, but a place for defects, which I don't think you've found.