我想在移动Android应用程序中使用odata4j库。有时候,HTTP请求没有得到响应,因为设备在发送请求后丢失了移动连接。经过几次尝试重现并计时后,我发现图书馆大约需要27分钟才会抛出“java.net.SocketException:Connection timed out”。有什么办法可以减少这种超时,所以我可以小心并更快地处理故障?谢谢。如何减少由odata4j发送的HTTP请求的超时
1
A
回答
3
使用球衣消费者实施(这是默认设置)。在构建消费者时添加JerseyClientBehavior [1]。这允许您修改ClientConfig [2] - 您可以修改连接+读取超时。
3
我想为@John Spurlock answer提供代码段。通过类似的代码http://code.google.com/p/odata4j/source/browse/odata4j-jersey/src/main/java/org/odata4j/jersey/consumer/behaviors/AllowSelfSignedCertsBehavior.java:
private static ODataJerseyConsumer createOdataConsumer(final String odataServerUrl) {
Builder builder = ODataJerseyConsumer.newBuilder(odataServerUrl);
builder.setClientBehaviors(TimeoutBehavior.reduceTimeout());
return builder.build();
}
private enum TimeoutBehavior implements JerseyClientBehavior {
INSTANCE;
@Override
public ODataClientRequest transform(final ODataClientRequest request) {
return request;
}
@Override
public void modify(final ClientConfig clientConfig) {
Map<String, Object> properties = clientConfig.getProperties();
properties.put(ClientConfig.PROPERTY_CONNECT_TIMEOUT, 10 * 1000);
properties.put(ClientConfig.PROPERTY_READ_TIMEOUT, 10 * 1000);
}
@Override
public void modifyClientFilters(final Filterable filterable) {}
@Override
public void modifyWebResourceFilters(final Filterable filterable) {}
public static OClientBehavior reduceTimeout() {
return TimeoutBehavior.INSTANCE;
}
}
相关问题
- 1. 如何减少HTTP请求?
- 2. 如何减少css http请求?
- 3. 减少大量的HTTP请求
- 4. http发布请求中的Angular2超时
- 5. mule ce 3.7.0发送http请求时发生异常 - 超时(java.util.concurrent.TimeoutException)
- 6. 如何发送'手写'的http请求?
- 7. 如何发送压缩的http请求?
- 8. HTTP请求超时
- 9. 发送HTTP请求
- 10. 发送HTTP请求
- 11. 发送标头中的Cookie时发送节点HTTP超时(请求/重置器)
- 12. 如何侦听由WebView发送的HTTP请求(目标c)?
- 13. 设置发送HTTP请求的时间
- 14. 根据发送的http请求数设置自动超时
- 15. 如何减少请求时间?
- 16. 减少HTTP请求 - HTML缓存
- 17. 如何以编程方式发送带请求的HTTP请求?
- 18. Android Developer Console如何发送HTTP请求?
- 19. 如何让Ajax.ActionLink发送Http Post请求?
- 20. 如何发送http请求c#
- 21. 如何从mysql发送http请求?
- 22. 如何发送HTTP请求到Servlet
- 23. 如何发送请求到http ...到https?
- 24. 如何使用Telnet发送HTTP请求
- 25. 如何用PyQt发送http请求?
- 26. 如何通过TCPSocket发送HTTP请求?
- 27. 如何在android中发送http请求?
- 28. AngularJS $ http服务请求的默认超时时间是多少?
- 29. 从浏览器发送http请求时缺少授权标头
- 30. 发送HTTP请求(验证请求)
伟大的片段,感谢分享。 – Nestor