发布日期:2023-03-21
使用 Java HttpClient 发送 HTTP 请求时,可以设置代理服务器以发送请求。以下是使用 HttpClient 设置代理 IP 的步骤:
1,创建 HttpClient 实例:
HttpClient client = HttpClient.newBuilder().build();
2,创建代理服务器地址:
InetSocketAddress proxyAddress = new InetSocketAddress("proxy_host", proxy_port);
其中,proxy_host 为代理服务器的主机名或 IP 地址,proxy_port 为代理服务器的端口号。
3,创建 Proxy 实例:
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress);
4,创建 HttpRequest 实例并设置代理:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("http://example.com/api"))
.GET()
.build();
HttpClient client = HttpClient.newBuilder()
.proxy(proxy)
.build();
在这个例子中,我们创建了一个 GET 请求,并将代理服务器设置为 HttpClient 的属性。可以使用这个 HttpClient 实例发送 HTTP 请求,它将使用代理服务器发送请求。
如果需要在请求中设置代理认证信息,可以使用 Authenticator 类来提供代理的用户名和密码:
Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication("username", "password".toCharArray()));
}
};
HttpClient client = HttpClient.newBuilder()
.proxy(proxy)
.authenticator(authenticator)
.build();
在这个例子中,我们创建了一个 Authenticator 实例来提供代理服务器的用户名和密码。然后,我们将这个 Authenticator 实例设置为 HttpClient 实例的属性,以确保每个请求都包含正确的代理认证信息。
5,发送请求并接收响应:
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
在这个例子中,我们使用 HttpClient 实例发送了一个请求,并将响应作为字符串接收。您可以根据需要将响应解析为适当的数据类型。
完整代码示例:
import java.io.IOException;
import java.net.*;
import java.net.http.*;
public class HttpClientProxyExample {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
InetSocketAddress proxyAddress = new InetSocketAddress("proxy_host", proxy_port);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress);
Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication("username", "password".toCharArray()));
}
};
HttpClient client = HttpClient.newBuilder()
.proxy(proxy)
.authenticator(authenticator)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("http://example.com/api"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
请注意,上面的示例仅适用于使用 HTTP 代理的情况。如果您需要使用 SOCKS 代理,则需要将 Proxy.Type 设置为 SOCKS。
2024-03-15
2024-03-15
2024-03-14
2024-02-28
2024-02-28
2023-03-21
关注巨量HTTP公众号
在线客服
客户定制
QQ客服 (09:00 - 24:00)
咨询热线 (09:00 - 24:00)
15629532303
扫码联系微信客服
公众号
扫码关注微信公众号
返回顶部