【问题标题】:Reading over HTTP & (hopefully) automating actions using Java使用 Java 读取 HTTP 和(希望)自动化操作
【发布时间】:2013-02-11 13:54:11
【问题描述】:

有没有办法在 java 中通过 HTTP 进行 get & put 调用?我还需要自动化任何用户输入,例如目标网页上的按钮单击(任何网页,而不仅仅是雅虎财经)

我尝试使用 apache commons 库但无法破解:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class Fin {

    /**
     * @param args
     */
    public static void main(String[] args) {
        DefaultHttpClient httpclient = new DefaultHttpClient();

        HttpGet httpget = new HttpGet("http://finance.yahoo.com");
        try {
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            httpget.releaseConnection();
        }
    }

}

我不断收到“java.net.ConnectException:连接被拒绝”,尽管我可以在浏览器中看到它。

【问题讨论】:

  • 您可能想尝试将日志级别降低到 DEBUG 或 TRACE,因为我认为 Apache HTTP 库通常会提供关于它在这些级别上所做的事情的良好信息......也许会变得很明显。
  • @cjstehno :我忘记添加代理了,对此很抱歉......我的错......现在有人可以回答我关于如何自动化任何用户输入的问题的第二部分,如按钮点击目标网页?
  • 听起来您正在做功能测试...您是否研究过 Geb 或 Selenium 之类的库,而不是尝试编写自己的框架?

标签: java apache http https yahoo-finance


【解决方案1】:

如果您真的想自动化基于浏览器的交互,您可以更进一步并使用 Watij,它通过 JVM 运行浏览器并通过基于浏览器的 API 驱动(即您确定要按下的按钮和它实际上会做这个)

否则,像您确定的那样的库将正常工作。您必须注意驱动请求的客户端 JavaScript 交互,并配置代理等(我怀疑这是您在上面的问题)

【讨论】:

  • 谢谢 Brian,cjstehno,我看了框架和 selenium,Imacros 和 wattij 看起来很有希望
猜你喜欢
  • 2015-08-27
  • 1970-01-01
  • 2013-09-04
  • 2011-01-22
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多