Apache HttpClient ile bir sayfa alıyorum ve sunucu yanıtının http gövdesini bir dizeye saklamak istiyorum, böylece bu dizeyi değiştirebilirim ve konsola yazdırın.Java'da Apache HttpClient, instream.toString = org.apache.http.conn.EofSensorInputStream
17:52:01,862 INFO Driver:53 - fetchPage STARTING
17:52:07,580 INFO Driver:73 - fetchPage ENDING, took 5716
[email protected]
fetchPage Sınıf:
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;
}
burada anlamak için anahtar teknoloji olan, 'inputStream üzerine toString()' 'o ', içeriğini bir' String' olarak okumak için değil, nesnenin kendisinin basit bir dize temsili olmasını sağlamak için bir yöntem değildir. Tipik olarak (bu durumda dahil) bir 'InputStream', sağlayabileceği kullanışlı bir dize temsile sahip değildir, bu yüzden sadece varsayılan' Object.toString() 'kullanır. – ColinD