连接失败:使用Java,Apache HTTP客户端测试API的超时
我正在尝试使用Java测试API。我正在使用Java 8,Apache HTTP客户端4.5.3来测试它。我尝试了许多不同的方法来使用Java .net类,Apache HTTP客户端进行测试,但每次都是相同的问题;连接失败:使用Java,Apache HTTP客户端测试API的超时
在线程异常 “主” 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工作流程的知识。
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.IOException;
import java.net.*;
public class API {
public static void main(String args[]) throws IOException, URISyntaxException {
HttpUriRequest request = new HttpGet("https://api.github.com");
// When
HttpResponse response = HttpClientBuilder.create().build().execute(request);
System.out.println(response.getStatusLine().getStatusCode());
}
}
使用Java .NET打包
import java.io.IOException;
import java.net.*;
public class API {
public static void main(String args[]) throws IOException, URISyntaxException {
URL url = new URL("http://maps.googleapis.com/maps/api/geocode/json?address=chicago&sensor=false");
//URL url = uri.toURL();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/xml");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("HTTP error code : "
+ conn.getResponseCode());
}
}
}
如果相同的URL在浏览器上,只有三种可能的工作。
该URL需要头像User-Agent。您可以设置所需的请求,如下所示:
request.setHeader("User-Agent", "Mozilla");
-
您处于公司或受限环境中,需要代理才能连接到外部URL。您的浏览器可能已经设置为使用代理服务器。在这种情况下,您需要将代理凭证传递给http客户端API。
所有传出的请求被阻挡在您的环境中通过防火墙或东西。在这种情况下,您需要让您的网络管理员允许网络连接。
我试过SetHeader方法,但没有工作,我得到相同的错误信息。我没有在Apache HttpClient 4.5.3中找到getCredentialsProvider方法。我的公司不允许更改网络连接,但稍后我会在个人计算机上尝试。希望这会起作用,但前两个选项并不奏效。 – Snehal
使用http代理的示例进行编辑。但是,你知道你的环境是否需要代理连接到外部URL? – alpeshpandya
我检查我的浏览器设置,我们没有使用任何代理连接外部网络。 – Snehal