Я использую Okhttp3 для использования службы отдыха с подчеркнутым прокси.
Я пробовал следующий код, но происходит исключение, например java. net .UnknownHostException:
Я пытался изменить решение прокси и изменил формат адреса прокси, но ничего не получилось. Пожалуйста, помогите.
int proxyPort = 8080;
String proxyHost = "proxy";
final String username = "user";
final String password = "pass";
okhttp3.Response response2 = null;
SSLUtilities.trustAllHostnames();
SSLUtilities.trustAllHttpsCertificates();
Authenticator proxyAuthenticator = new Authenticator() {
@SuppressWarnings({ "null", "unused" })
public Request authenticate(Route route, Response response) throws IOException {
String credential = Credentials.basic(username, password);
return response2.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
}
@Override
public Request authenticate(Route arg0, okhttp3.Response arg1) throws IOException {
// TODO Auto-generated method stub
return null;
}
};
OkHttpClient c = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)))
.proxyAuthenticator(proxyAuthenticator)
.build();
logger.info("FMS WEBSERVICE LOG >>> OkHttpClient " + c);
okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/x-www-form-urlencoded");
logger.info("FMS WEBSERVICE LOG >>> mediaType " + mediaType);
RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=0146b9a4-7e99-4c83-8e9e-6049cfec55da&client_secret=nY3oL5xQ3bJ8yT3nC1nV5bY4mY6eW7yP1nY6dS6rQ2nE5iR0rM&scope=ABLApis");
logger.info("FMS WEBSERVICE LOG >>> body " + body);
Request request = new Request.Builder()
.url("https://221.120.211.69:443/abl-api/uat/oauth2/token")
.post(body)
.addHeader("content-type", "application/x-www-form-urlencoded")
.addHeader("accept", "application/json")
.build();
logger.info("FMS WEBSERVICE LOG >>> request " + request);
okhttp3.Response r = c.newCall(request).execute();
logger.info("FMS WEBSERVICE LOG >>> response " + r);
} catch (Exception e) {
e.printStackTrace();
}
return "a";
}