2011-08-17 46 views
0

它总是捕捉异常,并输出到检索XML文件时“无法读取数据$ DID:$别名”当我运行阅读():HttpResponseException尝试使用Groovy脚本

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

要查看事情发生错误的最佳方法是为http生成器启用线程调试 - 这会向您显示正在发生的确切请求和响应。从这里你可以看到正在提取哪个URL,具有什么参数和标题,以及服务器返回的内容。

启用调试记录在这里 - http://groovy.codehaus.org/modules/http-builder/doc/index.html#Logging_and_Debugging

例如以下内容添加到您的log4j.properties

log4j.logger.org.apache.http.headers=DEBUG 
log4j.logger.org.apache.http.wire=DEBUG 

或者,更快捷,更脏,把事情处理好,在你的Groovy脚本的顶部(因人而异)

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