Как сделать HTTP-запрос через прокси-сервер Socks5 с аутентификацией с помощью Android okhttp3? ⇐ Android
-
Anonymous
Как сделать HTTP-запрос через прокси-сервер Socks5 с аутентификацией с помощью Android okhttp3?
Вот мой код, но я всегда получаю исключение java.net.SocketException: SOCKS: аутентификация не удалась. Действительно, я проверил учетные данные с помощью клиента Socks5, и они в порядке. Что-то меня смущает, что есть только одно возможное значение Proxy.Type.SOCKS, которое не имеет никакого значения между SOCKS4 и SOCKS5, так что действительно ли okhttp поддерживает прокси SOCKS5?
String proxyHost="заменить хостом"; int proxyPort=заменить портом прокси; String username="заменить именем пользователя"; String пароль="заменить паролем"; Строка url="https://api64.ipify.org?format=json"; Proxy proxyTest = новый прокси(Proxy.Type.SOCKS,new InetSocketAddress(proxyHost, proxyPort)); okhttp3.Authenticator proxyAuthenticator = новый okhttp3.Authenticator() { @Nullable @Override публичный запрос аутентификации(маршрут @Nullable Route, ответ @NonNull Response) выдает IOException { Строковые учетные данные = Credentials.basic(имя пользователя, пароль); вернуть ответ.запрос().newBuilder() .header("Прокси-авторизация", учетные данные) .строить(); } }; Клиент OkHttpClient = новый OkHttpClient.Builder() .connectTimeout(60,TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .proxy(proxyTest).proxyAuthenticator(proxyAuthenticator).build(); Запрос запроса = новый Request.Builder() .url(URL) .строить(); Ответ ответа = client.newCall(request).execute();
Вот мой код, но я всегда получаю исключение java.net.SocketException: SOCKS: аутентификация не удалась. Действительно, я проверил учетные данные с помощью клиента Socks5, и они в порядке. Что-то меня смущает, что есть только одно возможное значение Proxy.Type.SOCKS, которое не имеет никакого значения между SOCKS4 и SOCKS5, так что действительно ли okhttp поддерживает прокси SOCKS5?
String proxyHost="заменить хостом"; int proxyPort=заменить портом прокси; String username="заменить именем пользователя"; String пароль="заменить паролем"; Строка url="https://api64.ipify.org?format=json"; Proxy proxyTest = новый прокси(Proxy.Type.SOCKS,new InetSocketAddress(proxyHost, proxyPort)); okhttp3.Authenticator proxyAuthenticator = новый okhttp3.Authenticator() { @Nullable @Override публичный запрос аутентификации(маршрут @Nullable Route, ответ @NonNull Response) выдает IOException { Строковые учетные данные = Credentials.basic(имя пользователя, пароль); вернуть ответ.запрос().newBuilder() .header("Прокси-авторизация", учетные данные) .строить(); } }; Клиент OkHttpClient = новый OkHttpClient.Builder() .connectTimeout(60,TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .proxy(proxyTest).proxyAuthenticator(proxyAuthenticator).build(); Запрос запроса = новый Request.Builder() .url(URL) .строить(); Ответ ответа = client.newCall(request).execute();
Мобильная версия