【发布时间】:2016-10-18 10:13:28
【问题描述】:
我必须设置一个代理以使用 POST、proxyHost 和 proxyPort 发送 JSON。
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
Proxy proxyTest = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("proxy", proxyPort));
OkHttpClient client = new OkHttpClient()
.proxy(proxyTest)
.build();
//OkHttpClient.Builder builder = new OkHttpClient.Builder();
//builder.proxy(proxySAP);
//client.setProxy(proxySAP)
//OkHttpClient client = builder.build();;
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
当我尝试使用我在这里的一些答案中看到的 proxyTest 时,它指出了一个错误:
OkHttpClient 类型中的方法 proxy() 不适用于 参数(代理)
我正在使用 OKHTTP 3.3.1(okhttp3)
我的问题是,我该怎么办?我做了一些这样的测试:
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.proxy(proxyTest);
client.setProxy(proxyTest)
OkHttpClient 客户端 = builder.build();
但到目前为止没有任何效果。
感谢您的宝贵时间!
【问题讨论】:
-
你打电话给OkHttpClient.proxy(),但你想打电话给OkHttpClient.Builder.proxy(Proxy)。
-
您可以设置 JVM 使用的代理,带有标志(例如)
java -Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800 myclass(当 okHttp 再次更改其 api 时有用)。
标签: java json post proxy okhttp3