You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy HttpBuilder发送XML POST请求返回非格式化XML问题排查

问题分析与解决

原因

HttpBuilder 默认会直接返回服务器响应的原始XML字符串,不会自动对其进行格式化。你看到的单行文本就是服务器返回的原生内容,只是没有被排版展示而已。

解决办法

要得到结构化的格式化XML,需要手动对返回的字符串做解析和格式化处理,Groovy自带的XML工具就能轻松实现:

修改后的完整代码

static void request() {
    def body = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" +
            "<my XML request>";

    def result = HttpBuilder.configure {
        request.uri = "Ipaddress"
        request.contentType = 'application/xml'
        request.headers.id = "sadasdas1212134"
        request.body = body
    }.post();

    // 格式化输出XML
    if (result) {
        def xmlParser = new XmlParser()
        def xmlDoc = xmlParser.parseText(result)
        def printer = new XmlNodePrinter(new PrintWriter(System.out))
        printer.indent = 2 // 设置缩进空格数
        printer.print(xmlDoc)
    }
}

核心逻辑说明

  • 使用XmlParser解析原始XML字符串为DOM节点对象
  • XmlNodePrinter负责将DOM节点以带缩进的结构化形式输出,通过indent属性可以自定义缩进的空格数
  • 如果服务器返回的XML本身没有任何缩进,这个方法会自动添加合适的排版,让层级结构一目了然

另外,你也可以尝试检查目标服务器是否支持返回预格式化的XML——有些服务允许通过请求头(比如自定义Accept参数)来要求返回结构化的响应,但这种方式依赖服务端的支持,本地解析格式化是更通用可靠的方案。

内容的提问来源于stack exchange,提问作者henry58

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:02:09