如何从HttpResponseDecorator获取原始响应和URL

10

HTTP BuilderREST Client 返回一个 HttpResponseDecorator 。如何从中获取原始响应(用于记录目的)?

编辑(一些代码可能很方便):

    withRest(uri: domainName) {
        def response = post(path: 'wsPath', query: [q:'test'])
        if (!response.success) {
            log.error "API call failed. HTTP status: $response.status"
            // I want to log raw response and URL constructed here
        }
3个回答

18

我一直在做同一个问题的噩梦。这是我使用HTTPBuilder的解决方案:

response.failure = {resp ->
    println "request failed with status ${resp.status}, response body was [${resp.entity.content.text}]"
    return null
}

希望这可以帮上忙!


9
当我执行以上操作时,出现了"java.io.IOException: Attempted read from closed stream."的错误。 - Shinta Smith
我曾经遇到过同样的问题。原因是我无意中读取了两次内容。第一次是通过我的IDE调试器。内容不可重复(HttpClient文档),因此不能多次读取。通过在调试器中移除“观察”,问题得到解决。 - Luke

0
我使用了 XmlUtil,它返回格式化后的 XML:
    def data = respXml.data
    assert data instanceof groovy.util.slurpersupport.GPathResult

    println "${XmlUtil.serialize(data)}"

如果您的数据是从groovyx.net.http.HttpResponseDecorator解析的响应
希望能有所帮助。

-1
尝试这个:

println response.data


2
http://javadox.com/org.codehaus.groovy.modules.http-builder/http-builder/0.6/groovyx/net/http/HttpResponseDecorator.html#getData() 这就是原始响应的完全相反。 - Charles Wood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接