HttpEntity httpEntity=response.getEntity(); if(httpEntity!=null){ String httpheader = httpEntity.getContentType().toString(); long contentlength=httpEntity.getContentLength(); // 打印实体信息 System.out.println("Content Type: " + httpheader); System.out.println("Content Length: " + contentlength); // try (InputStream inputStream=httpEntity.getContent()){ BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream)); String line = null; while ((reader.readLine()!=null)){ line=reader.readLine(); line+=line.intern(); } System.out.println(line+"执行一次"); 为什么打印结果为null
时间: 2024-02-10 12:24:03 浏览: 26
打印结果为null的原因是你在读取每一行时使用了两次`reader.readLine()`方法。在while循环中,第一次调用`reader.readLine()`读取了下一行,但是它并没有被保存到`line`变量中。然后,第二次调用`reader.readLine()`又读取了下一行,并将结果保存到了`line`变量中。这样就导致了每次循环都会丢失一行数据。
你可以修改代码如下来避免这个问题:
```java
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
line += line.intern();
}
System.out.println("执行一次");
```
这样,每次循环读取到的行都会被保存到`line`变量中,并进行打印和操作。同时,最后一行的打印也被移出循环,确保只打印一次。
相关问题
HttpEntity entity = response.getEntity();
`HttpEntity entity = response.getEntity();` 是一个常见的代码行,它的作用是获取 HTTP 响应中的实体。在发送 HTTP 请求后,服务器会返回一个 HTTP 响应,响应中包含了实体信息,例如 HTML 页面、JSON 数据等。`response.getEntity()` 方法用于获取响应中的实体对象。
一般情况下,我们可以使用 `EntityUtils.toString(entity)` 将实体对象转换成字符串,例如:
```java
HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity);
System.out.println(responseString);
```
在上面的示例中,我们执行了一个 HTTP GET 请求,并获取了响应的实体对象。然后,我们使用 `EntityUtils.toString(entity)` 方法将实体对象转换成字符串,并输出到控制台。
需要注意的是,如果实体较大,`EntityUtils.toString(entity)` 方法可能会抛出 `OutOfMemoryError` 异常。在这种情况下,我们可以通过流的方式处理实体,例如:
```java
HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
```
在上面的示例中,我们通过 `entity.getContent()` 方法获取实体的输入流,并使用 `BufferedReader` 逐行读取实体内容。这种方式可以避免将整个实体加载到内存中,从而减少内存消耗。
HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); String responseString = EntityUtils.toString(entity);获取data的数组
要获取JSON响应结果中的"data"数组,可以使用如下代码:
```
JSONObject jsonObject = new JSONObject(responseString);
JSONArray dataArray = jsonObject.getJSONArray("data");
```
首先将响应结果字符串转换为JSONObject对象,然后使用getJSONArray()方法获取"data"字段对应的JSONArray对象,将其存储在dataArray变量中。此时,dataArray变量中存储的就是"data"数组的所有元素。