有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

http从Java中的GETPOST请求方法捕获URI、资源名称,如开发人员工具中所示

我这样做是为了增强SeleniumWebDriver脚本。 我曾尝试将httpclient与Java和其他许多东西结合使用,但我没有成功。 请帮忙

情况是这样的:

在网页中执行某个操作(如单击按钮)后, 在Chrome的开发者工具中可以看到GET/POST方法

我以谷歌为例

这里我需要的是收集所有的资源名称,直到某个资源出现(如果你在Chrome中打开开发者工具并导航到google.com,在最左边一栏的网络选项卡下,你会看到tia.png,这只是一个例子)

应该做到两件事:

  1. 确保加载了特定的资源

  2. 在执行任何其他操作之前,确保页面已完全加载(所有GET/POST方法都已传输)

httpclient、httpurlconnection只捕获一个请求,但是一个页面发送很多请求。我们如何捕获所有这些


共 (2) 个答案

  1. # 1 楼答案

    以下是我问题的答案:

    https://kenneth.io/blog/2014/12/28/taking-chrome-devtools-outside-the-browser/ https://github.com/auchenberg/chrome-devtools-app

    从博客:

    It’s a standalone app that runs Chrome DevTools in its own process. It’s powered by node-webkit, and it’s able to run on Windows, Mac and Linux, completely independently of Chrome.

    The GET,POST,resource names seen under the Network tab in Chrome Dev tool 我想捕获应用程序和服务器之间的所有请求(如屏幕截图所示),以便确保所有关键资源、请求都已来回传输,页面已完全加载。 我无法做到这一点,以编程方式执行我们在Chrome开发工具中看到的图像中网络选项卡下的内容

    肯尼斯的工作让我们在一定程度上实现这一点

  2. # 2 楼答案

    通过使用http apache客户端,您可以使用以下内容:- 为了解决您的问题,您可以获取响应代码“response.getStatusLine().getStatusCode()”并检查预期的响应代码,还可以处理响应的结果

    URI url = new URI("String URI");
    DefaultHttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    HttpResponse response = HttpClientBuilder.create().build().execute(post);
            System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
    BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    StringBuffer result = new StringBuffer();
    String line = "";
    while ((line = rd.readLine()) != null) {
        result.append(line);
    }
    System.out.println("Ressponse 1 >>>>"+result.toString());
    

    如果您需要在post请求中发送参数,例如:

    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    urlParameters.add(new BasicNameValuePair("username", "yourusername"));
    urlParameters.add(new BasicNameValuePair("password", "yourPassword"));
    post.setEntity(new UrlEncodedFormEntity(urlParameters));