首页 > 解决方案 > IllegalArgumentException 端口超出范围:改装拦截器中的 -1

问题描述

我正在调查我们的应用程序中开始出现的问题,该问题在设备上配置了 pac 文件代理。我注意到的一件事是,在这开始发生之前,我们将改造版本从 2.6.0 增加到使用 OkHttp3 的 2.9.0。我了解一般根本原因,那就是 okhttp 正试图遵守系统设置,并且正试图连接到设备指定的代理。但是我们的代理是使用 pac 文件 url 配置的,而不是带有端口的静态主机。

问题的堆栈跟踪:

Fatal Exception: java.lang.IllegalArgumentException: port out of range:-1
   at java.net.InetSocketAddress.checkPort(InetSocketAddress.java:144)
   at java.net.InetSocketAddress.createUnresolved(InetSocketAddress.java:269)
   at sun.net.spi.DefaultProxySelector$1.run(DefaultProxySelector.java:315)
   at sun.net.spi.DefaultProxySelector$1.run(DefaultProxySelector.java:219)
   at java.security.AccessController.doPrivileged(AccessController.java:43)
   at sun.net.spi.DefaultProxySelector.select(DefaultProxySelector.java:218)
   at okhttp3.internal.connection.RouteSelector$resetNextProxy$1.invoke(RouteSelector.java:106)
   at okhttp3.internal.connection.RouteSelector.resetNextProxy(RouteSelector.java:113)
   at okhttp3.internal.connection.RouteSelector.<init>(RouteSelector.java:53)
   at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:209)
   at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
   at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:76)
   at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.java:245)
   at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:32)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
   at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:96)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
   at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:83)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
   at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:76)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)

我正在寻找可能导致此问题的一些提示。这可能是库中的一个错误,因为一切似乎都在导致升级,但我愿意接受任何建议。它似乎与任何 Android 版本、安全补丁、设备型号或任何类似的东西都无关。

标签: retrofitretrofit2okhttp

解决方案


推荐阅读