Apache httpclient GET响应实体内容为空

时间:2015-07-28 18:24:59

标签: java apache-httpclient-4.x http-request

我使用Apache httpclient和httpcore在我的项目中实现HTTP请求。 最近我发现了这个问题:我有一个方法用这个身体

CloseableHttpClient httpclient = HttpClients.createDefault();
    try {       
        HttpGet httpGet = new HttpGet(URL);

        CloseableHttpResponse response = httpclient.execute(httpGet);
        Header[] h = response.getAllHeaders();
        for (int i = 0; i < h.length; i++) {
            System.out.println(h[i].getName());
        }
        System.out.println(response.getStatusLine().getStatusCode());
        HttpEntity entity = response.getEntity();
        InputStream content = entity.getContent();
        System.out.println(entity.getContentLength());

        org.jsoup.nodes.Document doc = Jsoup
                .parse(convertStreamToString(content));

        System.out.println(convertStreamToString(content));
        EntityUtils.consume(entity);
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (ClientProtocolException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }

使用有效的网址,但内容为空,状态代码为200。

我尝试使用firefox插件RESTClient和一个具有相同URL的简单GET请求,并且没有标题可用(内容响应不是空的)。

同样重新发送带有firefox调试器的Get请求(此时默认标头已经存在)。

Ps:我显然尝试添加所有标题但没有:(

有人可以帮助我使用Apache组件吗?

1 个答案:

答案 0 :(得分:0)

我解决了:方法convertStreamToString(内容)编辑了内容所以足够只调用一次方法(或者使用其他变量obv)。