【发布时间】:2016-03-17 15:08:12
【问题描述】:
我有这个代码:
ApiConsumer(String url) {
this.baseUrl = url
this.httpBuilder = initializeHttpBuilder()
this.cookies = []
}
private HTTPBuilder initializeHttpBuilder() {
def httpBuilder = new HTTPBuilder(baseUrl)
httpBuilder.handler.success = { HttpResponseDecorator resp, reader ->
resp.getHeaders('Set-Cookie').each {
String cookie = it.value.split(';')[0]
cookies.add(cookie)
}
return convertPlain("${reader}")
}
return httpBuilder
}
public def requestXML(Method method, ContentType contentType, String url, String bodyXML) {
httpBuilder.parser.'application/xml' = httpBuilder.parser.'text/plain'
httpBuilder.request(method, contentType) { request ->
uri.path = url
body = bodyXML
headers['Cookie'] = cookies.join(';')
}
}
基本上,requestXML(...) 使用 Groovy 的 HTTPBuilder 将 XML 请求发送到指定的 URL。
我正在使用此代码(带有其他次要功能)向服务发送请求,并且它可以工作。
但是现在我想重用它来向另一个服务发出 POST 请求,该服务大约在 30 分钟后响应,因为这个 WPS 服务运行一个程序并等待它的结束。如何在不等待响应的情况下发送此 POST 请求?
我需要设置超时吗?
我试图删除 httpBuilder.handler.success 闭包但没有成功。
我也无法更改 WPS 服务处理请求的方式。
【问题讨论】:
标签: post groovy httprequest