作者:手机用户2502898443 | 来源:互联网 | 2022-11-30 10:26
我想将一些json字符串发布到某些URL。我得到异常作为
Exception: java.net.SocketTimeoutException: failed to connect to
有关此问题的大量搜索结果,人们建议在改造中增加和减少超时参数。我想知道writeTimeout,readTimeout和connectTimeout之间的区别。这样我就可以触发SocketTimeoutException。这是我的复古客户。
public static Retrofit getClient() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().writeTimeout(20, TimeUnit.SECONDS).
//.authenticator(new Authen()).
readTimeout(30, TimeUnit.SECONDS).
connectTimeout(20, TimeUnit.SECONDS).
addInterceptor(interceptor).build();
return new Retrofit.Builder()
.baseUrl(DefinesClass.ITS_URL)
// .baseUrl("https://reqres.in")
// .addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(SimpleXmlConverterFactory.create())
.client(client)
.build();
}
有什么办法可以对异常帮助人员进行排序?
1> Jeel Vankhed..:
这三种方法的区别如下:
connectTimeout:
设置新连接的默认连接超时。值0表示没有超时,否则值必须介于1 Integer.MAX_VALUE
到毫秒之间。
的connectTimeout
TCP套接字连接到目标主机时被应用。默认值为10秒。
readTimeout:
设置新连接的默认读取超时。值0表示没有超时,否则值必须介于1 Integer.MAX_VALUE
到毫秒之间。
读取超时既适用于TCP套接字,也适用于单个读取IO操作,包括响应源上的操作。默认值为10秒。
writeTimeout:
设置新连接的默认写入超时。值0表示没有超时,否则值必须介于1 Integer.MAX_VALUE
到毫秒之间。
写超时适用于单独的写IO操作。默认值为10秒。
从这里来。
2> Jarvis..:
SocketTimeOut意味着您的客户端无法访问服务器。尝试在Postman中测试WebService 。
的连接超时是施加到创建TCP连接到HTTP服务器的超时时间。如果此时TCP握手未完成,则连接尝试失败。
该读取超时是你已经建立了连接的时刻施加的超时(所以握手完成,并且可以使用的连接)。如果在此超时时间内没有数据来自服务器,则连接将终止。
写入超时同样如此,我们无法在给定时间内写入任何内容。