OkHTTPClient代理validation如何?

问题:如何向OkHTTP添加授权代理。

我知道OkHTTP的构建器确实支持代理,尽管我很难设置代理 。

/** * Given a Url and a base64 encoded password return the contents of a website. * @param urlString * @param password * @return JSON */ public String getURLJson(String urlString, String password) { OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(urlString) .get() .addHeader("authorization", "Basic " + password) .addHeader("cache-control", "no-cache") .build(); Response response = null; try { response = client.newCall(request).execute(); String string = response.body().string(); response.body().close(); return string; } catch (IOException e) { System.err.println("Failed scraping"); e.printStackTrace(); } return "failed"; } 

我有IP /端口/用户名/密码。

虽然我不知道如何将它们变成Proxy proxy ,然后可以在client.SetProxy()中使用。

它似乎过于复杂,我似乎无法弄明白。 任何帮助,将不胜感激。

尝试这个:

 int proxyPort = 8080; String proxyHost = "proxyHost"; final String username = "username"; final String password = "password"; Authenticator proxyAuthenticator = new Authenticator() { @Override public Request authenticate(Route route, Response response) throws IOException { String credential = Credentials.basic(username, password); return response.request().newBuilder() .header("Proxy-Authorization", credential) .build(); } }; OkHttpClient client = 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();