首页 > 其他分享 >requests httpx post中json中文编码问题

requests httpx post中json中文编码问题

时间:2023-02-14 16:14:54浏览次数:43  
标签:中文 headers json requests post httpx

背景

requests、httpx post 提交 json 数据时,默认在库中 ensure_asciiTrue。会对中文进行 unicode 编码。

但是有的时候服务端并没有处理中文,没有进行解码,而我们又改不了服务端,就会出现问题!

解决

  1. 修改库的代码,添加上对应的 ensure_ascii 参数。不推荐,换个环境就用不了了。

  2. 推荐,自己提交 json,自己提交二进制数据,不让库来编码我们的数据。

    因为不是用 json 关键字参数,不会自动在请求头中添加 Content-Type,所以我们必须手动在请求头中添加 "Content-Type": "application/json"。大致代码如下:

# request
import json
import requests

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = requests.post('https://httpbin.org/post', data=json.dumps({'id': 1, 'name': '杰克'}, ensure_ascii=False).encode("utf-8"), headers=headers)
print(response.text)

# httpx
import httpx

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = httpx.post('https://httpbin.org/post', content=json.dumps({'id': 1, 'name': '杰克'}, ensure_ascii=False).encode("utf-8"),
                      headers=headers)
print(response.text)

httpbin 的响应中,中文好像自动编码了,实际上提交到服务器的数据就没有对中文进行编码了。

标签:中文,headers,json,requests,post,httpx
From: https://www.cnblogs.com/ercilan/p/17119911.html

相关文章

  • axios请求的get/post
    axios用到的比fetch要多,更加方便,提供了很多使用的API,引用的三种方式:npmnpminstallaxiosbowerbowerinstallaxioscdn<scriptsrc="https://unpkg.com/axios/dist/axios.m......
  • 关于工具软件:Apipost和Apifox哪个更好用看这篇就够了
    很多人搞不清楚Apipost和Apifox到底有什么区别,以下为实际体验,各位能够依据本身状况参考一下,有什么不足之处还请各位大佬多多指教。一、产品定位这块能够间接看他们的官......
  • Java 通过get post 请求url
    .已获取小程序的access_token为例,通过Get请求url1importcom.alibaba.fastjson.JSONObject;23StringwechatUrl="https://api.weixin.qq.com/cgi-bin/tok......
  • JSON化发送数据
    let msg = JSON.stringify({            'ClientName': name,            'City': City,            'ClientAddress': ad......
  • 从 Newtonsoft.Json 迁移到 System.Text.Json
    一.写在前面System.Text.Json是.NETCore3及以上版本内置的Json序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了各种......
  • JMeter java模拟多用户高并发请求测试(json,form表单)
     1.情景展示在实际开发过程中,需要进行测试的时候,往往需要进行压力测试,或者高并发情况下,同时对一张表数据进行修改、读取操作,程序会不会出现多个用户取出的数据一致,或者......
  • 第 4 课、postman接口测试-鉴权
                         ......
  • 第 3 课、postman的接口测试
    接口文档:1.接口测试离不开接口文档(API文档):https://www.juhe.cn/docs/api/id/63    同时给出Key:57d46b7258fc47e14290c33537f23d36根据接口文档,可以看出,这个接......
  • Python_json类方法
    Python_json类方法importrequestsimportjsonheaders={"User-Agent":"Mozilla/5.0(LinuxAndroid6.0Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,l......
  • post和get的区别
    get和post是http请求的两种方法,它们的区别在于:1、GET请求通过URL(请求行)提交数据,在URL中可以看到所传参数。POST通过“请求体”传递数据,参数不会在url中显示。2、GET请求......