Groovy中执行Curl请求获取XML文件时的问题求助
问题原因
你遇到的错误是因为Groovy的String.execute()方法会直接按空格拆分命令参数,不会像终端shell那样解析双引号。原代码里的"Accept: application/xml"被拆成了"Accept:、application/xml"两个独立参数,导致curl误将application当作主机名,抛出无法解析的错误,同时因为命令执行失败,自然得不到正确的XML输出。
解决方法
改用列表形式传递命令参数,每个参数作为列表的独立元素,避免空格和引号带来的解析问题,同时要读取命令的输出和错误流来获取结果:
def path = "你的目标URL" def process = ['curl', '-H', 'Accept: application/xml', path].execute() process.waitFor() // 获取标准输出(XML内容) def xmlOutput = process.inputStream.text // 获取错误输出 def errorOutput = process.errorStream.text println "XML输出:\n${xmlOutput}" println "错误信息:\n${errorOutput}"
补充说明
- 列表形式的参数传递会让Groovy正确识别每个命令参数,curl能正常接收
Accept头信息。 - 必须读取
inputStream和errorStream,否则可能出现缓冲区满导致进程阻塞的情况。
内容的提问来源于stack exchange,提问作者Feldmarshall
相关产品推荐
相关产品推荐

