功能型网站 设计,xsxz wordpress,万能浏览器最新下载,泰安卫生人才网问题
使用Qt发送一个Http post请求的时候#xff0c;服务一直返回错误和失败信息。同样的url以及post参数#xff0c;复制黏贴到postman里就可以发送成功。就感觉很神奇。
原因
最后排查出原因是因为参数中含有汉字而导致的编码问题。
在拼接post参数时#xff0c;使用了…问题
使用Qt发送一个Http post请求的时候服务一直返回错误和失败信息。同样的url以及post参数复制黏贴到postman里就可以发送成功。就感觉很神奇。
原因
最后排查出原因是因为参数中含有汉字而导致的编码问题。
在拼接post参数时使用了toLocal8Bit()来将QString转为QByteArray。而toLocal8Bit()会将QString对象转换为本地8位字符集编码的QByteArray对象。根据不同平台可能转换的编码方式不同在中文Windows系统中toLocal8Bit()会将QString对象转换为GB2312编码的QByteArray对象。因为服务部署在Linux环境下所以应该是这里导致的问题。
解决
改为使用QJsonDocument组织json字符串调用它的toJson()接口直接转换成QByteArray默认是Utf-8编码的。 或者另一种方式是直接将拼接的字符串调用toUtf8()接口应该也是可以的。