使用httpclient调用建行接口返回数据为空的解决

在做建设银行的支付查询接口的时候,采用了httpclient的查询,使用getMethod组装好了正确的数据后,executeMethod后,返回的statusCode为200,说明已经调用正常了,但就是返回的数据为空,无论是html形式的或者xml形式的。然后用浏览器直接访问能够显示正确的结果。然后就开始排查问题,发现换成其他的url,不论是http的还是https都可以返回结果,然后就检查是否需要安装建行的证书,但是在那些其他电脑上,即没有导入证书的浏览器也可以得到结果,结论是建行的支付接口查询没必要在httpclient的加入协议Protocol(即需要一个keystore来调用https)。在网上找了半天的相关信息,终于搜到了一篇帖子http://bosschen.iteye.com/blog/1161426。。里面的一句“由于返回的xml开头空了4行,所以需要setRequestHeader来设置后才可以获取“。只需要加上:

method.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)");  
method.setRequestHeader("Content-Encoding","text/html");  
method.setRequestHeader("Content-Type","text/xml; charset=UTF-8");  
method.setRequestHeader("Accept-Language", "zh-cn");  
method.setRequestHeader("Connection","close"); 
 就能够正确的返回数据了。纠结了一天的问题。

猜你喜欢

转载自relic6.iteye.com/blog/1218596
今日推荐