AFNetworking 3.0 设置超时时间不起作用的原因


下面这种写法就不会起作用,打印输出超时间为:0

    __weak AFHTTPSessionManager *manager = [NetWorkManager sharedPostHTTPSession];

    manager.requestSerializer.timeoutInterval = 30.0;

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/x-zip-compressed"]; // text/json text/plain text/html application/json

    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:urlLink parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) { ...}


这种写法超时时间就为:30 ,可以成功设置

    __weak AFHTTPSessionManager *manager = [NetWorkManager sharedPostHTTPSession];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/x-zip-compressed"]; // text/json text/plain text/html application/json

    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    manager.requestSerializer.timeoutInterval = 600.0;

[manager POST:urlLink parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) { ...}


在使用RestTemplate发送HTTP请求时,如果不设置超时时间,它将使用默认的超时时间。默认情况下,RestTemplate没有设置超时时间,因此会等待无限期地直到接收到响应或发生错误。 然而,在实际开发中,建议设置超时时间以避免长时间等待或请求阻塞的情况。可以通过以下方式来设置RestTemplate的超时时间: 1. 在创建RestTemplate对象时使用`SimpleClientHttpRequestFactory`类,并设置连接和读取超时时间: ```java RestTemplate restTemplate = new RestTemplate(); SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(5000); // 连接超时时间为5秒 requestFactory.setReadTimeout(10000); // 读取超时时间为10秒 restTemplate.setRequestFactory(requestFactory); ``` 2. 使用`HttpComponentsClientHttpRequestFactory`类来设置超时时间: ```java RestTemplate restTemplate = new RestTemplate(); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); requestFactory.setConnectTimeout(5000); // 连接超时时间为5秒 requestFactory.setReadTimeout(10000); // 读取超时时间为10秒 restTemplate.setRequestFactory(requestFactory); ``` 以上两种方法都可以设置连接超时时间和读取超时时间,根据实际情况进行调整。这样,在发送HTTP请求时,如果在指定的时间内没有收到响应,RestTemplate将会抛出`java.net.SocketTimeoutException`异常。这样可以避免无限期的等待或请求阻塞的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值