Result from DuckDuckGo API becomes empty when only the letter case are changed

Summary.

This request is successful and returns a JSON string:
```python
response = requests.get('https://api.duckduckgo.com/?q=My+ip&format=json&no_html=1&skip_disambig=1&no_redirect=1')
```
However, this requests does return only an empty response:
```python
response = requests.get('https://api.duckduckgo.com/?q=My+IP&format=json&no_html=1&skip_disambig=1&no_redirect=1')
```

The only difference is "My+ip" vs "My+IP". Both requests works on a browser (chrome and firefox). This could not be an issue with DDG since it's working thru other means.

## Expected Result

Response should not be empty.

## Actual Result

Empty response.

## Reproduction Steps

```python
import requests

response = requests.get('https://api.duckduckgo.com/?q=My+IP&format=json&no_html=1&skip_disambig=1&no_redirect=1')
response.json()
```

## System Information

    $ python -m requests.help

```
{
  "chardet": {
    "version": "3.0.4"
  },
  "cryptography": {
    "version": ""
  },
  "idna": {
    "version": "2.8"
  },
  "implementation": {
    "name": "CPython",
    "version": "3.7.3"
  },
  "platform": {
    "release": "10",
    "system": "Windows"
  },
  "pyOpenSSL": {
    "openssl_version": "",
    "version": null
  },
  "requests": {
    "version": "2.21.0"
  },
  "system_ssl": {
    "version": "101000af"
  },
  "urllib3": {
    "version": "1.24.1"
  },
  "using_pyopenssl": false
}
```

This command is only available on Requests v2.16.4 and greater. Otherwise,
please provide some basic information about your system (Python version,
operating system, &c).


I don't think it is a problem with the requests library itself. I've tested this q=My+IP on several different http clients, including different languages, and I get an empty response body in all of them unless I do q=My+ip with the lowercase "ip". The only way I do not get an empty response body is if I try the url in a browser or with Postman. Not sure why that is, maybe it needs a certain header?

@bolivierjr 

If it works with other tools like browsers (chrome, firefox, etc), Postman and cURL, it should also work with requests. But it doesn't! Possibly a bug in the requests library.

When I used cURL with `-iv` option, there are no additional headers attached, so it could not be an issue with the headers.

@roniemartinez 

Ah, I see that duckduckgo is using HTTP/2 and requests doesn't support HTTP/2.  Not sure why the first url still works though, maybe someone can chime in. You can use an adapter from "hyper" module  and requests sessions as a suggestion to make it work.

Here is an example:

### Installation:
```
pip install hyper
```

### Usage:

```python
import requests
from hyper.contrib import HTTP20Adapter

session = requests.Session()
session.mount('https://', HTTP20Adapter())
response = session.get('https://api.duckduckgo.com/?q=My+IP&format=json&no_html=1&skip_disambig=1&no_redirect=1')
print(response.json())
```

Thanks @bolivierjr 

I was trying to verify too if HTTP/2 was the cause. I'm checking with cURL.

So far cURL chooses HTTP/2 in the backend and works. Response becomes empty when I add `--http1.1` parameter. Could really be a bug in duckduckgo API since both protocols are offered:

```
* ALPN, offering h2
* ALPN, offering http/1.1
```

PS: HTTP20Adapter worked. Thanks a lot!