我刚开始使用 groovy,并开始使用它来测试一些 REST 服务。由于“ prolog中的内容不允许”,我对我们服务的XML响应进行解析。一段时间后,我遇到了一篇文章,说一开始可能会有一个字节订单标记。为了补偿,我按照他们的方法修剪第一个 < 之前的字符,然后解析响应。虽然这有效,但我还被告知问题是响应返回为“传输编码:”分块”。

使用 HTTPBuilder,有没有办法在不修剪字符的情况下处理分块响应?如果我尝试:

def http = new HTTPBuilder('url')
http.request( Method.valueOf("GET"), XML )

我收到“序言消息中不允许内容”。然而:

http.request( Method.valueOf("GET"), TEXT )

可以工作,但需要在将响应发送到 XmlParser 之前修剪文本直到第一个 <。

有帮助吗?

解决方案

我有同样的问题,当我需要与IIS服务器进行交互。返回的XML曾在由Web服务器返回的实际XML的前一个假字。我工作围绕它是这样的:

StringReader reader = builder.get( path: 'rcserver/systeminfo.xml', contentType: ContentType.TEXT )
def text = reader.getText()
def xml = new XmlSlurper().parseText(text.substring(1));

其他提示

HTTPBuilder 类有一个 设置内容编码() 方法允许您指定响应的内容类型。

也许是这样的:

http.contentEncoding = ContentEncoding.Type.GZIP
http.request( Method.GET, XML)

希望这可以帮助。

我是有这个问题以及击球通过https IIS服务器。这里是一个小除了维姆Deblauwe的答案POST请求。你必须比你在响应预计请求发送不同的类型。

发送POST用XML作为请求类型和文本作为响应类型。然后,分析文本响应为XML。这为我工作。

在Groovy的:

def reader = http.request(Method.POST, ContentType.TEXT){
    uri.path = "myPath.api"
    send ContentType.XML, postBodyXml
}
def text = reader.getText()
def resultxml = new XmlSlurper().parseText(text.substring(1));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top