【问题标题】:Is it possible to pass http response from Java to browser?是否可以将 http 响应从 Java 传递到浏览器?
【发布时间】:2015-11-11 13:34:06
【问题描述】:

我通过 apache HttpClient 获得了一个页面

CookieStore cookieStore = new BasicCookieStore();
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

HttpGet request = new HttpGet("http://mywebsite.com");
request.addHeader("User-Agent",  "Mozilla/5.0");

HttpClient client = HttpClientBuilder.create().build();
try {
    HttpResponse response = client.execute(request, localContext);

} catch (IOException e) {
    e.printStackTrace();
}

我需要手动点击此页面中的链接

我可以将整个响应(html、会话、cookie)传递给浏览器吗?这样我就可以完成剩下的过程了。

【问题讨论】:

  • 为什么在java和浏览器中都需要这样做?
  • 这在很大程度上取决于平台(操作系统和浏览器),您应该在问题中提供更多详细信息。但我怀疑任何像样的浏览器都会让你弄乱它们的执行上下文......
  • 因为有些步骤需要在程序中做,只有最后一步需要在浏览器中做。
  • OS=windows7, Java8, browser=chrome(如果需要,我可以更换其他浏览器)

标签: java browser apache-commons-httpclient


【解决方案1】:

这是一个类似的问题,它会在 Firefox 中获取 cookie:Passing Cookies from Java to Browser

至于传递你的会话,可能是不可能的,尽管你可以用 Firefox 数据库做同样的事情。它当然不是“即插即用”的解决方案,也不能保证跨版本工作。

“传递 HTML”可以通过用 Java 创建一个 Web 服务器来完成。您可以为此使用一些库。

但是,所有这些东西都是 hacky,在大多数情况下都行不通。

另一种方法是使用HtmlUnit 从您的程序中单击链接,而无需打开真正的浏览器。

【讨论】:

  • 有趣的工具,在我的其他程序中非常有用,但在这种情况下,仍然不够用。实际上在我的程序中,url是https,所以我需要为httpclient设置一个证书,比如link。而且最重要的是,这个页面有很多链接,链接是动态生成的,我需要决定点击哪个,这个逻辑很难实现。
  • 也许您可以使用 httpclient 识别链接,在自定义 gui 中打印出来,然后根据您自己的 gui 中的用户输入,使用 httpclient 单击链接?
猜你喜欢
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
相关资源
最近更新 更多