首页 > 返回的json数据为什么是null,网页上输入url地址,返回的又是正常的

返回的json数据为什么是null,网页上输入url地址,返回的又是正常的

FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
    @Override
    public String call() throws Exception {
        HttpGet get = new HttpGet(path);
        HttpResponse httpResponse = httpclient.execute(get);
        if (httpResponse.getStatusLine().getStatusCode() == 200) {
            String result = EntityUtils.toString(httpResponse.getEntity());
            return result;
        }
        return null;
    }
});
new Thread(task).start();
return task.get();

我觉得你应该先检查返回的code是什么啊,里面就一个判断,你说网页上访问返回的json正常,但是你的不行,我觉得很大可能就是那里的问题,是不是返回值不是200的。。。


一步步调试,我之前做接口的时候也出现过这种问题,
第一步,看下请求的url,看下其数据类型,长度,是否与直接在浏览器中打开的一致。

第二步,构造http请求,查看返回http状态码。服务端日志记录看是否有访问,

第三步,,检查服务端返回的数据,页面content-type:是否为json,文件是否为utf-8无BOM类型


以前我有个同事也遇到过这种情况。。检查了很久很久,最后发现 statuscode 是 201。。。
可以朝这个思路想想


尝试放宽getStatusCode()的判断条件呢? 比如

if (response.getStatusLine().getStatusCode() > HttpStatus.SC_BAD_REQUEST) {
    // Error
} else {
    // success, 处理数据
}

Update

HttpGetHttpPost的区别在于前者是将参数在地址中传递,后者是将参数用List传递。而并没有在你的代码里看到httpPost.setEntity()去设置参数。这样看来你的HttpPost和HttpGet应该没差才对,所以仍不清楚为什么换成post就可以了。
另外你在网页上输入URL地址是什么?确定和传给HttpGet的一致吗?


404了,你就检查你的链接有没有错误,有没有网络权限,有没有连上网络,反正就是这些小问题。普通的Get请求,应该没什么别的原因。
Good luck.

【热门文章】
【热门文章】