The httpx allows to create both synchronous and asynchronous HTTP requests.

1. httpx GET request example:

#!/usr/bin/python
import httpx
r = httpx.get('http://google.com', params ={}) # Send query parameters as params dict if need
print(r.text)

2. httpx POST form request example:

#!/usr/bin/python
import httpx
payload = {'name': 'Marry', 'occupation': 'software dev'}
r = httpx.post('https://httpbin.org/post', data=payload)
print(r.text)

3. Getting stream data:

#!/usr/bin/python
import httpx

url = 'https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-mini-memstick.img'
with open('FreeBSD-12.0-RELEASE-amd64-mini-memstick.img', 'wb') as f:
with httpx.stream('GET', url) as r:
for chunk in r.iter_bytes():
f.write(chunk)

4. Asynchronous GET request(multiple) example:

#!/usr/bin/python
import httpx
import asyncio

async def get_async(url):
async with httpx.AsyncClient() as client:
return await client.get(url)
urls = ["http://webcode.me", "https://httpbin.org/get"]
async def launch():
resps = await asyncio.gather(*map(get_async, urls))
data = [resp.text for resp in resps]

for html in data:
print(html)
asyncio.run(launch())

5. Asynchronous POST form request example:

#!/usr/bin/python

import httpx
import asyncio

async def main():

data = {'name': 'Marry', 'occupation': 'engineer'}

async with httpx.AsyncClient() as client:
r = await client.post('https://httpbin.org/post', data=data)
print(r.text)

asyncio.run(main())

6. Python httpx async POST JSON request example:

#!/usr/bin/python

import httpx
import asyncio

async def main():

data = {'int': 123, 'boolean': True, 'list': ['a', 'b', 'c']}

async with httpx.AsyncClient() as client:
r = await client.post('https://httpbin.org/post', json=data)
print(r.text)

asyncio.run(main())

7. Asynchronous stream request:

#!/usr/bin/python

import httpx
import asyncio

url = 'https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-mini-memstick.img'
async def main():
with open('FreeBSD-12.0-RELEASE-amd64-mini-memstick.img', 'wb') as f:

async with httpx.AsyncClient() as client:
async with client.stream('GET', url) as r:

async for chunk in r.aiter_bytes():
f.write(chunk)

asyncio.run(main())