JAVA语言如何接入代码Demo

以下分别展示API模式、账密认证模式下的Php语言demo示例:

一、API教程demo示例

package demo;

import okhttp3.OkHttpClient;
import okhttp3.Request;

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

/**
 * compile 'com.squareup.okhttp3:okhttp:4.9.3'
 */
class ApiProxyJava {
    public static void main(String[] args) throws IOException {
        testHttpWithOkHttp();
        testSocks5WithOkHttp();
    }

    /**
     * http代理
     */
    public static void testHttpWithOkHttp() throws IOException {
        //定义要访问的URL
        String url = "https://ipinfo.ipidea.io";
        //创建一个HTTP类型的代理对象,设置代理服务器IP地址和端口号:
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("ip", "port"));//这里的 "ip" 和 "port"应替换为代理服务器地址和端口。
        //构建一个OkHttpClient实例,并配置好HTTP代理:
        OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
        //发送GET请求并获取响应:
        Request request = new Request.Builder().url(url).build();
        okhttp3.Response response = client.newCall(request).execute();
        //获取并打印响应内容
        String responseString = response.body().string();
        System.out.println(responseString);
    }

    /**
     * SOCKS5代理
     */
    public static void testSocks5WithOkHttp() throws IOException {
        //定义要访问的URL
        String url = "https://ipinfo.ipidea.io";
        //创建一个SOCKS类型的代理对象,设置代理服务器IP地址和端口号:
        Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("ip", "port"));//这里的 "ip" 和 "port"应替换为实际的SOCKS代理服务器地址和端口。
        //构建一个OkHttpClient实例,并配置好SOCKS代理:
        //这里使用了SOCKS代理,这意味着所有的网络流量(包括TCP连接)都将通过这个SOCKS代理进行转发。
        OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
        //发送GET请求并获取响应:
        Request request = new Request.Builder().url(url).build();
        okhttp3.Response response = client.newCall(request).execute();
        //获取并打印响应内容:
        String responseString = response.body().string();
        System.out.println(responseString);
    }
}


二、账密认证教程demo示例

package demo;

import okhttp3.Credentials;
import okhttp3.OkHttpClient;
import okhttp3.Request;

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

/**
 * compile 'com.squareup.okhttp3:okhttp:4.9.3'
 */
class AutProxyJava {
    public static void main(String[] args) throws IOException {
        testWithOkHttp();

        testSocks5WithOkHttp();
    }

    /**
     * http代理
     */
    public static void testWithOkHttp() throws IOException {
        String url = "https://ipinfo.ipidea.io";//请求地址
        //创建一个HTTP类型的代理对象,指定代理服务器的主机名和端口号
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", "port"));//这里用到的"host"和"port"应替换为代理服务器地址和端口。
        // 构建一个自定义的OkHttpClient实例,设置代理服务器并添加一个代理认证器(proxyAuthenticator):
        OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).proxyAuthenticator((route, response) -> {
            // 在这里生成Basic认证的凭证字符串
            String credential = Credentials.basic("account", "password");//此处的账号密码 "account" 和 "password" 应替换为认证账户名和认证账户密码。
            // 如果代理服务器需要身份验证,则在请求头中添加认证信息
            return response.request().newBuilder()
                    .header("Proxy-Authorization", credential)
                    .build();
        }).build();

        //发送GET请求并获取响应:
        Request request = new Request.Builder().url(url).build();
        okhttp3.Response response = client.newCall(request).execute();
        //获取并打印响应内容:
        String responseString = response.body().string();
        System.out.println(responseString);
    }

    /**
     * Socks5代理
     */
    public static void testSocks5WithOkHttp() throws IOException {
        //请求地址
        String url = "https://ipinfo.ipidea.io";
        //创建一个SOCKS类型的代理对象,设置实际的代理服务器主机名和端口号:
        Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("host", "port"));//这里用到的"host"和"port"应替换为代理服务器地址和端口。
        //设置全局默认的认证器(Authenticator),用于处理所有网络连接需要的基本身份验证。这里预设了一个用户名和密码:
        java.net.Authenticator.setDefault(new java.net.Authenticator() {
            private PasswordAuthentication authentication =
                    new PasswordAuthentication("account", "password".toCharArray());//此处的账号密码 "account" 和 "password" 应替换为认证账户名和认证账户密码。

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {//当网络连接需要身份验证时,系统会调用此方法获取认证信息。
                return authentication;
            }
        });
        //构建OkHttpClient实例,配置好SOCKS代理:
        OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
        //发送GET请求并获取响应:
        Request request = new Request.Builder().url(url).build();
        okhttp3.Response response = client.newCall(request).execute();
        //获取并打印响应内容:
        String responseString = response.body().string();
        System.out.println(responseString);
    }
}