Как использовать прокси Socks5 в Okhttp для запуска http-запроса

2

Как я могу использовать прокси-сервер Socks5 в Okhttp для запуска HTTP-запроса?

Мой код:

Proxy proxy = new Proxy(Proxy.Type.SOCKS, InetSocketAddress.createUnresolved(
        "socks5host", 80));
OkHttpClient client = new OkHttpClient.Builder()
       .proxy(proxy).authenticator(new Authenticator() {
            @Override
            public Request authenticate(Route route, Response response) throws IOException {
                if (HttpUtils.responseCount(response) >= 3) {
                    return null;
                }
                String credential = Credentials.basic("user", "psw");
                if (credential.equals(response.request().header("Authorization"))) {
                    return null; // If we already failed with these credentials, don't retry.
                }
                return response.request().newBuilder().header("Authorization", credential).build();
            }
        }).build();


Request request = new Request.Builder().url("http://google.com").get().build();
Response response = client.newCall(request).execute();  <--- **Here, always throw java.net.UnknownHostException: Host is unresolved: google.com**

System.out.println(response.body().string());

Как избежать UnknownHostException? Любой пример?

Благодарю!

Теги:
okhttp3

1 ответ

2

Я нашел решение: создав OkHttpClient.Builder(), установите новый socketFactory вместо установленного прокси и верните прокси-сервер sock5 внутри socketFactory createSocket.

  • 6
    Вы можете добавить код?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню