用 urllib 替换请求

Replacing requests with urllib

我目前正在使用以下函数为进一步的 API 调用创建不记名令牌:

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 

如何使用 urllib.request 来实现同样的效果?

这是您要找的吗?

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