- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Apache HttpClient 获取一个页面,我想将服务器回复的 http 正文存储到一个字符串中,这样我就可以操作这个字符串并将它打印到控制台。
不幸的是,当运行这个方法时,我收到了这条消息:
17:52:01,862 INFO Driver:53 - fetchPage STARTING
17:52:07,580 INFO Driver:73 - fetchPage ENDING, took 5716
org.apache.http.conn.EofSensorInputStream@5e0eb724
fetchPage 类:
public String fetchPage(String part){
log.info("fetchPage STARTING");
long start = System.currentTimeMillis();
String reply;
String searchurl = URL + URL_SEARCH_BASE + part + URL_SEARCH_TAIL;
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(searchurl);
HttpResponse response;
try {
response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
}
long elapsedTimeMillis = System.currentTimeMillis()-start;
log.info("fetchPage ENDING, took " + elapsedTimeMillis);
reply = instream.toString();
System.out.println(reply);
return reply;
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
最佳答案
您在 InputStream
读取完后调用 toString
。您需要从字节数组创建字符串。获取内容的字符串版本的更简单方法是使用 EntityUtils.toString(HttpEntity)
具体的实现应该是这样的:
import org.apache.http.util.EntityUtils;
public String fetchPage(String part){
log.info("fetchPage STARTING");
long start = System.currentTimeMillis();
String reply;
String searchurl = URL + URL_SEARCH_BASE + part + URL_SEARCH_TAIL;
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(searchurl);
HttpResponse response;
try {
response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
return EntityUtils.toString(entity);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
关于java - Java 中的 Apache HttpClient,instream.toString = org.apache.http.conn.EofSensorInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217011/
下面是我的代码 ifstream& operator>>(ifstream &input,Line3D &line3d) { int x1,y1,z1,x2,y2,z2; x1=0; y1=0; z1
我对setText(TextView)有问题。 view = EgridView.getChildAt( iterator ); parameter = (TextView) vie
如何在 IntStream 或 list 流中添加增量值? List testInstances = IntStream.range(0, rankedItem.size())
我正在尝试在 Modelica 中构建一个非常简单的分布式热流体体积模型,并且正在努力使用流运算符正确实现它。本卷使用 DryAirNasa 作为介质,我希望它没有海量存储、没有压降、也没有能量存储(
所以我试图从 YouTube API 运行示例代码.我正在尝试运行 Search sample code for Java .但是,在第 70 行和第 71 行,它说 InputStream in =
我一直在努力使用 Netty 将字节流传输到 ClamAV 服务的配置。我正在 Apache Camel 路线上运行。 使用 Netty,我无法拦截“超出 INSTREAM 大小限制”消息。 INST
这是 this question 的延续因为它回答了我的原始问题,但没有解决错误。 问题: 如何修复卡在这一行的代码 inStream.readline() 我的 Intent : 这是一个循环检查是
我正在努力在 Ruby 中实现 clamd 守护进程的 INSTREAM 命令。这是clamd的文档 @file = File.open("input.txt") socket = TCPSocket
我正在尝试从实时提要的片段中获取字幕。我正在运行命令ffmpeg -i seg-1077853030-v1-a1.ts 输出 `输入#0,mpegts,来自'seg-109853030-v1-a1.t
当 TrueView InStreams ad 时触发哪些事件开始和结束? YouTube iFrame API reference没有给出任何提示。 我需要知道真正的视频何时开始。 由于这些广告是“
我正在使用 Apache HttpClient 获取一个页面,我想将服务器回复的 http 正文存储到一个字符串中,这样我就可以操作这个字符串并将它打印到控制台。 不幸的是,当运行这个方法时,我收到了
我是一名优秀的程序员,十分优秀!