当前位置: 首页 > 知识库问答 >
问题:

尝试发出简单的Http GET请求时连接超时

严宇
2023-03-14
https://www.google.com/search?q=stuff
import java.io.IOException;    
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class INRIX {

    private final CloseableHttpClient httpClient = HttpClients.createDefault();

    public static void main(String[] args) {

        INRIX inrix = new INRIX();


        try {
            inrix.peticionGet();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                inrix.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    private void close() throws IOException {
        httpClient.close();
    }

    private void peticionGet() throws Exception {

        HttpGet getRequest = new HttpGet("https://www.google.com/search?q=stuff");

        // Request Headers
        getRequest.addHeader("custom-key", "stuff");
        getRequest.addHeader(HttpHeaders.USER_AGENT, "Googlebot");

        try (CloseableHttpResponse response = httpClient.execute(getRequest)) {

            // Get HttpResponse Status
            System.out.println(response.getStatusLine().toString());

            HttpEntity entity = response.getEntity();
            Header headers = entity.getContentType();
            System.out.println(headers);

            if (entity != null) {
                // return it as a String
                String result = EntityUtils.toString(entity);
                System.out.println(result);
            }

        } catch (ClientProtocolException e) {
            System.out.println("ClientProtocolException");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("IOException");
            e.printStackTrace();
        }

    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class INRIXURL {

    public static void main(String[] args) {
        INRIXURL inrix = new INRIXURL();

        inrix.peticionGet();
    }

    public void peticionGet() {

        String url = "https://www.google.com/search?q=stuff";

        HttpURLConnection httpClient;
        try {
            httpClient = (HttpURLConnection) new URL(url).openConnection();

            // optional default is GET
            httpClient.setRequestMethod("GET");

            // add request header
            httpClient.setRequestProperty("User-Agent", "Mozilla/5.0");

            int responseCode = httpClient.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);

            try (BufferedReader in = new BufferedReader(new InputStreamReader(httpClient.getInputStream()))) {

                StringBuilder response = new StringBuilder();
                String line;

                while ((line = in.readLine()) != null) {
                    response.append(line);
                }

                // print result
                System.out.println(response.toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

第一种情况下的错误:

java.net.ConnectException:连接超时:连接在java.net.DualStackPlainSockeTimpl.Connect0(本机方法)在java.net.DualStackPlainSockeTimpl.SocketConnect(未知源)在java.net.AbstractPlainSockeTimpl.SocketConnect(未知源)在java.net.AbstractPlainSockeTimpl.DoConnect(未知源)在java.net.AbstractPlainSockeTimpl.ConnectToAddress(未知源)在ewHttpClient(未知源)位于Sun.net.www.protocol.http.httpurlconnection.plainConnection.plainConnection(未知源)位于Sun.net.www.protocol.http.https.abstractDelegatehttpsurlconnection.connection(未知源)位于Sun.net.www.protocol.http.httpurlconnection.getInputStream0(未知源)位于Sun.net.www.protocol.http.httpurlconnection.getInputStream0(未知源)位于

我想我可能与工作场所的代理配置有关,但我不知道如何检查或修复它,如果是这种情况,或者如果我只是没有正确地执行请求。我注意到我不能ping公司网络之外的站点或机器,但我不知道这是否相关。

同样,使用https://reqbin.com/,请求工作良好,我可以毫无问题地浏览。

共有1个答案

曹原
2023-03-14

正如你所说:

我想我可能与我工作场所的代理配置有关,[...]

您应该询问您的IT如何使用您的公司代理(或者检查您的网络设置,它可能会显示您的代理设置)

 类似资料:
  • 我们使用PgBouncer作为基于spring的应用程序连接池的中间件。在应用程序中,我们使用HikariCP进行应用程序级连接池。 我们将HikariCP的值设置为一小时,将设置为30秒。

  • 我正在使用JMeter测试Spring Boot REST API服务器。 JMeter选项包括 测试一直进行到1-20000个请求, 但请看下面的图片。 平均响应时间在10ms以下,但有时超过20~50ms。 当响应时间增加时,将出现连接超时。 即使我将连接超时设置为超过10分钟。 为什么会出现这个错误?我找不到..

  • 问题内容: 我刚刚在跟随他们的网页时安装了Docker- Toolbox 我开始看下面 但是当我尝试表演时,这就是我所看到的 怎么了? 问题答案: 今天早上我遇到了同样的问题,以下内容为我解决了这个问题: 看来这是由于Docker虚拟机进入了一种奇怪的状态。这里有一个开放的github问题

  • 向传递的 URL 发出一个 GET 请求。 使用 XMLHttpRequest web API 向给定的 url 发出 get 请求。 通过调用给定的 callback 和 responseText 来处理 onload 事件。 通过运行提供的 err 函数,处理onerror事件。 省略第四个参数 err ,默认将错误记录到控制台的 error 流。 const httpGet = (url,

  • 我正在尝试通过Firebase中的特定功能包含用户列表(超过50个)。这是我的代码: 错误是(对于每条记录): {Error:发出请求时出错:超过了10000ms的超时时间。在FirebaseAppError.FirebaseError[作为构造函数](/srv/node_modules/firebase admin/lib/utils/Error.js:39:28)在FirebaseAppErr

  • 我正在尝试运行以下Sqoop命令: 然而,我得到了这个错误: 17/02/04 00:04:53 警告安全。用户组信息: 特权行动例外作为:avinash (身份验证:简单) 原因:java.io.文件不发现异常: 文件不存在: hdfs://localhost:9000/home/avinash/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/slf4j-api-