尝试使用groovy脚本检索xml文件时出现HttpResponseException

时间:2011-08-17 19:01:47

标签: groovy

当我运行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吗?

1 个答案:

答案 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')