grails - 在 Groovy/Grails 中设置 new URL(...).text 的超时

标签 grails groovy

我使用以下 Groovy 代码片段来获取 Grails 应用程序中 HTML 页面的纯文本表示形式:

String str = new URL("http://www.example.com/some/path")?.text?.decodeHTML()

现在我想更改代码,以便请求在 5 秒后超时(导致 str == null)。实现这一目标的最简单且最 Groovy 的方法是什么?

最佳答案

我检查了groovy 2.1.8的源代码,以下代码可用:

'http://www.google.com'.toURL().getText([connectTimeout: 2000, readTimeout: 3000])
<小时/>

处理配置映射的逻辑位于方法org.codehaus.groovy.runtime.ResourceGroovyMethods#configuredInputStream

private static InputStream configuredInputStream(Map parameters, URL url) throws IOException {
    final URLConnection connection = url.openConnection();
    if (parameters != null) {
        if (parameters.containsKey("connectTimeout")) {
            connection.setConnectTimeout(DefaultGroovyMethods.asType(parameters.get("connectTimeout"), Integer.class));
        }
        if (parameters.containsKey("readTimeout")) {
            connection.setReadTimeout(DefaultGroovyMethods.asType(parameters.get("readTimeout"), Integer.class));
        }
        if (parameters.containsKey("useCaches")) {
            connection.setUseCaches(DefaultGroovyMethods.asType(parameters.get("useCaches"), Boolean.class));
        }
        if (parameters.containsKey("allowUserInteraction")) {
            connection.setAllowUserInteraction(DefaultGroovyMethods.asType(parameters.get("allowUserInteraction"), Boolean.class));
        }
        if (parameters.containsKey("requestProperties")) {
            @SuppressWarnings("unchecked")
            Map<String, String> properties = (Map<String, String>) parameters.get("requestProperties");
            for (Map.Entry<String, String> entry : properties.entrySet()) {
                connection.setRequestProperty(entry.getKey(), entry.getValue());
            }
        }

    }
    return connection.getInputStream();
}

关于grails - 在 Groovy/Grails 中设置 new URL(...).text 的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839435/

相关文章:

grails - 如何在Grails中使用withCriteria导致新的withCriteria查询?

grails - Groovy 中的接口(interface)

Groovy 范围函数不适用于大数

grails - 从网址映射永久重定向而参数不起作用,grails

java - Grails 和消费 SOAP 网络服务

Grails 日志记录 : Multiple loggers and appenders

grails - 一个vs多个复选框

groovy - Groovy中缺少生成器/yield关键字的解决方法

groovy - 如何获取 groovy 对象或类的所有变量?

java - 应用每隔几分钟卡在 futex_wait_queue_me() 上