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
相关产品推荐
相关产品推荐

