?
最近凯哥在调凯哥优惠淘公众号(领取优惠券的公众号)的时候,发现以前好好的程序,突然不能用了。于是就本地断点,发现了如下错误:
?
程序通过httpClient访问一个地址的时候,提示:server returned HTTP Response code :400 fro URL:XXXX这个错误。不对啊,以前的没问题现在怎么就突然有问题了?而且将程序访问的url地址放到浏览器中就可以正常访问的。为什么在程序中就访问不了呢?
于是就把访问的URL 复制下来,一个一个对比,发现,原来,程序访问出错的url中有中文。怀疑是不是因为中文没有进行URL编码导致【ps:最后得到的结论确实是中文没有URL编码】?
Jave中对URL进行url编码,大家都知道,就是URLEncoder.encode()这个方法。简单啊!该就是呗。于是凯哥就把整个URL进行encode.结果大家可想而知,把http://xxx 中的://也进行了encode.通过httpclient当然访问不了的。
程序
访问前的URL:xxx?name=凯哥==>结果访问失败
修改后的URL:xxx?name=URLEncoder.encode("凯哥","utf8")==>访问成功
于是凯哥就修改编码方式,只对中文部分的参数进行encode.修改之后,程序就正常访问成功了。
总结:
如果程序访问一个url出现server returned HTTP Response code :400 fro URL这个错误,但是在浏览器中访问同样的url没问题的话,就要考虑是不是因为访问的url中有特殊字符。如空格、逗号、中文等。把这些特殊字符进行url编码后在使用程序进行访问或许就能成功了。需要注意,在进行url编码的时候,指定编码的字符集
原文地址:https://www.cnblogs.com/kaigejava/p/12150453.html