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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装