EntityBuilder的几个函数

本文介绍了一种在HTTP短信接口中正确处理GBK编码的方法。通过使用HttpClient 4.3发送短信时遇到“ERROR&发送内容必须有签名”的错误,并探讨了如何避免此问题。文章详细解释了使用EntityBuilder的不同方法(setParameters, setStream, setBinary, setText)来处理中文和其他特殊字符,以确保短信内容被正确编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目用到短信发送http接口,接口要求短信内容编码为GBK,用httpclient4.3,发送的时候总会提示“ERROR&发送内容必须有签名”,将签名放入后依然提示同样内容,于是意识到可能是编码问题,最终问题解决,得到一些经验。

使用httppost,将内容用EntityBuilder将各项参数放入,EntityBuilder有几个函数可用:

setParameters(List<NameValuePair> parameters):放入的参数会默认以URLEncode将各项参数编码为setContentEncoding(String contentEncoding)中指定的编码方式,中文字符等会变成%xx%xx(GBK/gb2312一个汉字两个字节),或%xx%xx%xx(UTF-8一个汉字三个字节),接收端需要URLDecoder之后才能使用。

setStream(InputStream stream)与setBinary(byte[] binary)不做处理,如果需要自己指定内容的编码方式,应该用这两个函数。

setText(String text)会按系统默认编码处理,即ISO-8859-1,如果有中文,由于超出编码范围,会出现乱码,调试能发现content中的字节为负数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值