Java 实现 OkHttp 设置proxy代理

参考网址:
Java语言代码示例-文档中心-青果网络代理IP_Java语言代码示例https://www.qg.net/doc/1698.html

添加依赖:

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.3</version>
        </dependency>

请求示例:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;

public class OkHttpProxyExample {
    
    private static String proxyIp = "Proxy Ip"; //必填:代理服务Ip

    private static Integer proxyPort = ****; //必填:代理端口

    private static String authKey = "key"; //可选:你的用户名
    
    private static String password = "auth pwd"; //可选:你的鉴权密码

    public static void main(String[] args) throws IOException {
        // 创建代理
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy_host", proxyPort));
        
        // 创建OkHttpClient并设置代理
        OkHttpClient client = new OkHttpClient.Builder()
                .proxy(proxy)
                //若有鉴权方式:可添加一下配置,反之忽略此步骤
                .proxyAuthenticator((route, response) -> {
                    String credential = Credentials.basic(authKey, password);
                    return response.request().newBuilder().header("Proxy-Authorization", credential).build();
                })

                .build();
        
        // 创建请求
        Request request = new Request.Builder()
                .url("需访问目标网址")
                .build();
        
        // 发送请求
        Response response = client.newCall(request).execute();
        
        // 处理响应
        System.out.println(response.body().string());
    }
}

使用中以下异常报错:

 java.io.IOException: unexpected end of stream on null

解决方法:

        1、检查更新okHttp 依赖版本(低版本存在兼容问题);

        2、代理服务ip 是否可以正常访问;

        3、导入Response包是否正确;

猜你喜欢

转载自blog.csdn.net/qq_42697946/article/details/131735952
今日推荐