2011-08-17 3 views
0

를 사용하여 XML 파일을 검색 할 때 "에 대한 데이터를 읽을 수 없습니다 $ DID : $ 별칭"나는) (읽기 실행HttpResponseException 그것은 항상 예외 출력을 잡는다 그루비 스크립트

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 builder의 와이어 디버깅을 활성화하는 것입니다. 그러면 정확한 요청과 응답이 표시됩니다. 여기에서 가져온 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 

또는 빠르고했던 것, 당신의 그루비 스크립트의 상단에이 권리를 넣어 (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')