首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何缩短odata4j发送超时请求的时间

如何缩短odata4j发送超时请求的时间
EN

Stack Overflow用户
提问于 2012-06-15 20:56:05
回答 2查看 939关注 0票数 1

我正在尝试在一个移动安卓应用程序中使用odata4j库。有时,HTTP请求不会得到响应,因为设备在发送请求后不久就失去了移动连接。经过几次重现和计时之后,我注意到这个库大约需要27分钟才会抛出一个"java.net.SocketException: Connection timed out“。有没有什么方法可以减少这个超时,这样我就可以更快地处理和处理故障?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-18 20:11:28

使用jersey consumer实现(这是默认实现)。在构造消费者时添加JerseyClientBehavior 1。这允许您修改ClientConfig 2-您可以修改连接+读取超时。

1

2

票数 3
EN

Stack Overflow用户

发布于 2013-02-09 19:13:41

我想为@John Spurlock answer提供代码片段。通过类比下面的代码http://code.google.com/p/odata4j/source/browse/odata4j-jersey/src/main/java/org/odata4j/jersey/consumer/behaviors/AllowSelfSignedCertsBehavior.java

代码语言:javascript
复制
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;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11051075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档