代码工匠

Walking The Long Road.

HttpClient使用坑一则——关于Post Data的encoding

之前有个Http服务,使用Serlvet API实现的,现在遇到一个问题:一个同学使用HttpClient进行POST调用,结果中文传过来都是乱码。

使用自制抓包工具DP-IDEA抓包分析Http请求,发现类似&value=%3f%3f内容,并且Http头中Content-Type为application/x-www-form-urlencoded。上网查了才发现,Http Post请求也会默认做UrlEncoding,而HttpClient如果不设置,默认会用”ISO-8859-1”进行编码,于是改为UTF-8,问题解决!

PS: ISO-8859-1编码时,会将高位字符编码成63(16进制就是3F),所以以后遇到这个可疑的字符,更加有迹可循一点。

Add a comment