tylrr 2023-01-19 18:49 采纳率: 84.6%
浏览 37
已结题

request 库改为 httpx的语法问题:

request 库改为 httpx的语法问题:
我有段request库的正常的代码,想改成用httpx异步库实现。但是我不知道怎么把 list类型请求体提交给httpx 库。
请问怎么下面代码里的 r = requests.post(url, data=json.dumps(url_list), headers=headers, proxies=None) 改成httpx实现?谢谢

def get_detail(url_list: list):
    url = "https://xxxxx.com/url-metrics"
    headers = {'Connection': 'keep-alive',
               'Content-Length': '255',
               'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
               'Accept': 'application/json, text/javascript, */*; q=0.01',
               'Content-Type': 'application/json; charset=UTF-8',
               'X-Bartender-Version': '2',
               'sec-ch-ua-mobile': '?0',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
               'sec-ch-ua-platform': '"Windows"',
               'Sec-Fetch-Site': 'none',
               'Sec-Fetch-Mode': 'cors',
               'Sec-Fetch-Dest': 'empty',
               'Cookie': 'auth=ObDE1eqgN1IZBvvXnwQxJopRl8U1pYPRR2TYgVI6JgrznTjR0wOOFhlPbAghLqou;',
               'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6'
               }
    r = requests.post(url, data=json.dumps(url_list), headers=headers, proxies=None)
    print(r.text)



  • 写回答

2条回答 默认 最新

  • m0_54204465 2023-01-19 19:18
    关注

    可以使用以下代码来替换原来的 requests.post() 方法:

    import httpx
    
    async def get_detail(url_list: list):
        url = "https://xxxxx.com/url-metrics"
        headers = {'Connection': 'keep-alive',
                   'Content-Length': '255',
                   'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
                   'Accept': 'application/json, text/javascript, */*; q=0.01',
                   'Content-Type': 'application/json; charset=UTF-8',
                   'X-Bartender-Version': '2',
                   'sec-ch-ua-mobile': '?0',
                   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
                   'sec-ch-ua-platform': '"Windows"',
                   'Sec-Fetch-Site': 'none',
                   'Sec-Fetch-Mode': 'cors',
                   'Sec-Fetch-Dest': 'empty',
                   'Cookie': 'auth=ObDE1eqgN1IZBvvXnwQxJopRl8U1pYPRR2TYgVI6JgrznTjR0wOOFhlPbAghLqou;',
                   'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6'
                   }
        async with httpx.AsyncClient() as client:
            r = await client.post(url, json=url_list, headers=headers)
        print(r.text)
    
    

    注意,我在这里将请求体的格式改为 json,并使用 httpx 的 AsyncClient 类来异步发送请求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日
  • 修改了问题 1月19日
  • 创建了问题 1月19日

悬赏问题

  • ¥50 内网的网页打开的Excel下载到本地
  • ¥15 该网站用的是什么程序模版
  • ¥15 verilog modelsim仿真
  • ¥15 Power BI 里面 帕累托图突出显示前20
  • ¥50 用预估矫正法,分数阶微分方程组传染病的最优控制代码怎么写
  • ¥15 画个数据流程图,手画也行
  • ¥60 AS自带模拟器AVD Root 和 Xposed安装
  • ¥30 哪位搞Android的编程师可以帮我远程一下,悬赏30元
  • ¥15 solidity部署上合约,可以mint,也继承接口了,在区块链也不显示代币名字
  • ¥15 讨论 博士论文交互项怎么讨论?