Search code examples
pythonpython-requestsurllib

Replacing requests with urllib


I'm currently using the following function to create a bearer token for further API Calls:

import ujson
import requests

def getToken():
        #create token for Authorization'
        url = 'https://api.XXX.com/login/admin'
        payload = "{\n\t\"email\":\"test@user.com\",\n\t\"password\":\"password\"\n}"
        headers1 = {
        'Content-Type': 'application/json'
        }
        response = requests.request('POST', url, headers = headers1, data = payload)

        #create string to pass on to api request
        jsonToken = ujson.loads(response.text)
        token = jsonToken['token']
        return token 

How can I do the same by using urllib.request?


Solution

  • Is this what you're looking for?

    from urllib.request import Request, urlopen
    import ujson
    
    def getToken():
        url = 'https://api.xxx.com/login/admin'
        payload = """{"email":"test@user.com","password":"password"}"""
        headers = {
            'Content-Type': 'application/json'
        }
    
        request = Request(method='POST',
                        data=payload.encode('utf-8'),
                        headers=headers,
                        url=url)
        with urlopen(request) as req:
            response = req.read().decode('utf-8')
            jsonToken = ujson.loads(response)
            token = jsonToken['token']
            return token