Tôi đã kiểm tra mã nguồn của groovy 2.1.8
, bên dưới mã có sẵn:
String text = 'http://www.google.com'.toURL().getText([connectTimeout: 2000, readTimeout: 3000])
Logic để xử lý bản đồ cấu hình nằm trong phương pháp 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();
}
+1: Rất đẹp! Và với một bản vá: http://jira.codehaus.org/secure/attachment/46210/URL.text-timout.patch – knorv
Ước gì tôi có thể nghĩ ra một cách thử nghiệm (mặc dù không yêu cầu máy thử nghiệm phải có kết nối internet) , và nếu không có búa một số trang web nghèo mỗi khi ai đó chạy thử nghiệm) ;-) –
Chỉ là một bản cập nhật, nó đã được phát hành trong Groovy. trả lại URL mới (url) .getText ([connectTimeout: 500, readTimeout: 5000]); – Ben