连接失败:使用Java测试API的错误,Apache HTTP客户端

nue99wik  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(308)

我尝试使用Java测试API。我使用Java 8,Apache HTTP客户端4.5.3来测试它。我尝试了许多不同的方法来测试使用Java .net类,Apache HTTP客户端,但每次都是相同的问题;
在线程“main”中出现异常org.apache.http.conn.HttpHostConnectException:连接到api.github.com:443 [api.github.com/192.30.253.116,api.github.com/192.30.253.117]失败:连接超时:在org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159)
每次我都超时。但是如果我在浏览器中使用相同的URL,我就会得到结果。
有人能帮我指出问题吗?是设置问题还是代码问题?
尝试了几乎所有的代码在互联网上。我是初学者的API测试和没有深入的HTTP工作流的知识。

  1. import org.apache.http.HttpResponse;
  2. import org.apache.http.client.methods.HttpGet;
  3. import org.apache.http.client.methods.HttpUriRequest;
  4. import org.apache.http.impl.client.HttpClientBuilder;
  5. import java.io.IOException;
  6. import java.net.*;
  7. public class API {
  8. public static void main(String args[]) throws IOException, URISyntaxException {
  9. HttpUriRequest request = new HttpGet( "https://api.github.com" );
  10. // When
  11. HttpResponse response = HttpClientBuilder.create().build().execute( request );
  12. System.out.println(response.getStatusLine().getStatusCode());
  13. }
  14. }

字符串
使用Java .net包

  1. import java.io.IOException;
  2. import java.net.*;
  3. public class API {
  4. public static void main(String args[]) throws IOException, URISyntaxException {
  5. URL url = new URL("http://maps.googleapis.com/maps/api/geocode/json?address=chicago&sensor=false");
  6. //URL url = uri.toURL();
  7. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  8. conn.setRequestMethod("GET");
  9. conn.setRequestProperty("Accept", "application/xml");
  10. if (conn.getResponseCode() != 200) {
  11. throw new RuntimeException("HTTP error code : "
  12. + conn.getResponseCode());
  13. }
  14. }
  15. }

zpgglvta

zpgglvta1#

如果相同的URL在浏览器中工作,那么只有三种可能性。

  1. URL需要像User-Agent这样的头。您可以像这样设置请求头:request.setHeader("User-Agent", "Mozilla");
    1.您处于公司或受限环境中,需要代理来连接到外部URL。您的浏览器可能已设置为使用代理服务器。在这种情况下,您需要将代理凭据传递给http客户端API。
    示例:https://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientProxyAuthentication.java
    1.在您的环境中,所有传出的请求都被防火墙或其他东西阻止。在这种情况下,您需要请求网络管理员允许网络连接。

相关问题