当我运行read()时,它始终捕获异常并输出“无法读取$ dId:$ alias的数据”:
http = new HTTPBuilder('https://somewebsite.com')
def read(http, path, dId, alias, portalFile, outputFileName) {
try {
println "Reading : path:$path, file:$portalFile"
http.get(path: path,
contentType: TEXT,
query: [id:dId, instance:alias, format:'xml', file:portalFile]) {resp, reader ->
println "response status: ${resp.statusLine}"
println 'Headers: -----------'
resp.headers.each { h ->
println " ${h.name} : ${h.value}"
}
new File(outputFileName).withWriter{out -> out << reader}
}
} catch (HttpResponseException h) {
println "Unable to read data for $dId:$alias"
}
}
如果我使用我的网络浏览器访问网站并点击我需要的xml文件,它就可以了。有什么办法可以输出它连接的URL吗?
答案 0 :(得分:0)
要确定错误发生的最佳方法是为http构建器启用线程调试 - 这将显示正在发生的确切请求和响应。通过此,您可以看到正在获取的URL,具有哪些参数和标头,以及从服务器返回的内容。
此处记录了启用调试 - http://groovy.codehaus.org/modules/http-builder/doc/index.html#Logging_and_Debugging
E.g。将以下内容添加到您的log4j.properties
log4j.logger.org.apache.http.headers=DEBUG
log4j.logger.org.apache.http.wire=DEBUG
或者,更快更脏,把它放在你的groovy脚本(YMMV)的顶部
System.setProperty('org.apache.commons.logging.Log', 'org.apache.commons.logging.impl.SimpleLog')
System.setProperty('org.apache.commons.logging.simplelog.log.org.apache.http.wire', 'DEBUG')