Groovy httpBuilder-将GetWeather作为参数传递

Groovy httpBuilder-将GetWeather作为参数传递,groovy,Groovy,Groovy新手,所以请原谅我两周来一直在学习Groovy的知识不足。无论如何,我试图向globalweather.asmx?WSDL发送一个soap请求,同时将GetWeather作为参数传递,而不是传递XML文本,但是我似乎无法得到正确的结果。我试图搜索一个关于如何实现这一点的教程,但失败了,大多数教程都传递了实际的XML。以下是我到目前为止所做的尝试 @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-b

Groovy新手,所以请原谅我两周来一直在学习Groovy的知识不足。无论如何,我试图向globalweather.asmx?WSDL发送一个soap请求,同时将GetWeather作为参数传递,而不是传递XML文本,但是我似乎无法得到正确的结果。我试图搜索一个关于如何实现这一点的教程,但失败了,大多数教程都传递了实际的XML。以下是我到目前为止所做的尝试

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')

import groovyx.net.http.ContentType
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.Method


def http     = new HTTPBuilder('http://www.webservicex.com/globalweather.asmx?WSDL')
def postBody = ['Newark', 'USA'];
//body = postBody
println http.get(path: '', query: [GetWeather: postBody])

我们需要更多的信息来真正帮助您:您是试图将WS作为SOAP还是REST Web服务来请求?如果是后者,获取还是发布

因为您使用的是HTTPBuilder的get方法,所以我假设您使用的是REST get版本。在这种情况下,您要尝试的是将浏览器指向URL的编程等价物

让我们首先分析一下这意味着什么。单击该链接时,浏览器将向www.webservicex.com服务器发送HTTP GET请求。这个请求没有什么特别之处,唯一真正有趣的是URL本身。但是,为了简单起见,服务器将URL分解为3部分:

主持人:www.webservicex.com 路径:/globalweather.asmx/GetWeather 查询参数:[CityName:'Newark',CountryName:'USA'] 如您所见,GetWeather不是一个参数,而是路径本身的一部分。此外,由于它看起来很混乱,我将重命名postBody,它看起来像HTTP POST请求主体的变量,以查询数据或将数据直接传递给get方法,在本例中

这为我们提供了以下代码,用于删除未使用的导入:

import groovyx.net.http.HTTPBuilder

def http     = new HTTPBuilder('http://www.webservicex.com/globalweather.asmx?WSDL')
println http.get(path: '/globalweather.asmx/GetWeather', query: [CityName: 'Newark', CountryName: 'USA'])
工作原理:返回数据的值与在具有相同输入值的浏览器中使用表单时的值不相同

使用的文件:

Web服务文档: HTTPBuilder获取请求文档:
啊,我明白了,我以前试过这个,但得到了内部服务器错误。也许是我没付钱给他。这对我很有帮助,谢谢!也很抱歉与postBody混淆。