1

我正在尝试在 Android Studio 项目的 Gradle 脚本中使用 Httpbuilder-NG。该脚本将一些文件上传到 Web 服务器进行验证,服务器以“ok”或未验证文件的名称进行响应。

我在尝试

response.success { FromServer fs, Object body ->
    println "Success: ${fs.statusCode}, Text is: ${body}, Properties are: ${body.properties}"
}

结果总是:

Success: 200, Text is: [102, 105, 108, 101], Properties are: [class:class [B, length:4]

请注意,它是一个 4 元素数组,而不是文本字符串。无论服务器返回“ok”还是其他内容,数组都保持不变。我认识到我的服务器可能会返回一些非标准的东西,但它在 Postman 中运行良好。

我也试过

    response.success { FromServer fs, Object body ->
        println "has body = ${fs.hasBody}"
        println "content type = ${fs.contentType}"
        println "charset = ${fs.charset}"
        println "files uploaded, result = ${fs.reader.text}"
        //println "Success: ${fs.statusCode}, Text is: ${body}, Properties are: ${body.properties}"
    }

结果总是

has body = true
content type = text/html
charset = UTF-8
files uploaded, result = 

即正文应该在的空白字符串。

fs.hasBody 返回true

任何帮助,将不胜感激。

4

1 回答 1

1
def httpBin = configure {
        request.uri = 'http://groovy-lang.org/processing-xml.html'
    }
    def result = httpBin.get() {
        response.success {  fromServer,body ->
             body
        }           
    }
    assert result instanceof groovy.util.slurpersupport.NodeChild
    println result

<body>上面的代码片段返回此 网页的标签内的所有文本http//...processing-xml

要缩小结果范围,您需要groovy.util.slurpersupport.NodeChild进一步解析。

于 2018-05-24T08:57:28.983 回答