我想做一个请求并从动态网站获得响应,如果我使用普通浏览器(如 chrome)执行此操作并查看源代码,这将显示所有文本(无 javascripts),但如果我尝试执行 wget 或 HttpClient 我得到用 javascripts 响应,没有文本。
文本是动态的,那么我如何才能收到最终的源代码(带有文本)?
请,如果不清楚,请按照以下步骤操作:
1 - 转到http://www.stj.jus.br/webstj/processo/Justica/detalhe.asp?numreg=201201911000&pv=010000000000&tp=51
2 - 检查元素并查看 detalhe.asp 的源代码
3 - 打开终端并使用 wget 获取此页面
现在你能看出区别了吗?
---- 编辑 ---- 如果有帮助,我尝试使用 HttpClient 执行此操作:
private static InputStream getPageSource(String url) {
InputStream inputStream = null;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(url));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
String responseString = out.toString();
//..more logic
System.out.println(responseString);
inputStream = response.getEntity().getContent();
} else{
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (Exception e) {
e.printStackTrace();
}
return inputStream;
}
---- EDIT 2 ---- 我完成了这项工作,将一个字段放在标题中:Referer
如果我在执行 httpclient 之前输入此行: get.setHeader("Referer", "http://www.stj.jus.br/webstj/processo/Justica/pagina_lista.asp"); 一切正常..所以,现在的问题是:
如何自动从 HttpClient 获取此参数(Referer)?