設(shè)置系統(tǒng)參數(shù)如下:
System.setProperty("proxyHost", "localhost");
System.setProperty("proxyPort", "1080");
PRC調(diào)用異常如下:
Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:1080
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:265)
at okhttp3.internal.connection.RealConnection.connectTunnel(RealConnection.java:235)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:177)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
at okhttp3.RealCall.execute(RealCall.java:81)
at com.aliyun.tea.Tea.doAction(Tea.java:67)
原因分析:
根據(jù)異常信息提示:是因?yàn)榕渲昧讼到y(tǒng)參數(shù) 導(dǎo)致在進(jìn)行RPC 調(diào)用時(shí)異常,根據(jù)異常堆棧信息找到
sun.net.spi.DefaultProxySelector.List<Proxy> select(URI var1) 發(fā)現(xiàn)如下代碼:
if (var3 != null && var3.length() != 0) {
if (var11 != null) {
var5 = NetProperties.get(var11.property);
synchronized (var11) {
if (var5 == null) {
if (var11.defaultVal != null) {
var5 = var11.defaultVal;
} else {
var11.hostsSource = null;
var11.pattern = null;
}
} else if (var5.length() != 0) {
var5 = var5 + "|localhost|127.*|[::1]|0.0.0.0|[::0]";
}
if (var5 != null && !var5.equals(var11.hostsSource)) {
var11.pattern = DefaultProxySelector.toPattern(var5);
var11.hostsSource = var5;
}
if (DefaultProxySelector.shouldNotUseProxyFor(var11.pattern, var8)) {
return Proxy.NO_PROXY;
}
}
}
}
根據(jù)以上代碼發(fā)現(xiàn)
image.png
image.png
最終走的是本地的代理,所以會(huì)請(qǐng)求不通
解決以上問(wèn)題方法:
刪掉以上配置即可