Grails HttpBuilder URL编码GET

时间:2012-11-23 14:15:26

标签: xml rest grails httpbuilder

我想与具有基于URL的API的webservice进行通信。例如,我有以下网址:

http://api.bla.com/aaa/bbb.ashx?Action=GetSecurityToken&vendorId=3

我可以将URL放入浏览器并获取XML页面,其中包含所有详细信息。

我想从我的grails应用程序中获取XML页面,因此我使用以下代码:

http = new HTTPBuilder('http://api.bla.com/aaa/bbb.ashx')
html = http.get( path : '/', query : [Action :"GetSecurityToken", vendorId: "3"] ) )
println html

为什么这不起作用。我得到了一个糟糕的要求。如何从我的grails控制器中的上面的URL获取xml页面?

1 个答案:

答案 0 :(得分:1)

我认为最终网址为http://api.bla.com/aaa/bbb.ashx/?Action=GetSecurityToken&vendorId=3,因为您将基本网址定义为http://api.bla.com/aaa/bbb.ashx,并将您的通话路径设置为/

尝试更改您的基本网址(取自this示例):

def http = new HTTPBuilder('http://api.bla.com/aaa')
http.get( path : '/bbb.ashx',
          contentType : XML,
          query : [Action :"GetSecurityToken", vendorId: "3"] ) { resp, reader ->

  println "response status: ${resp.statusLine}"
  println 'Headers: -----------'
  resp.headers.each { h ->
    println " ${h.name} : ${h.value}"
  }
  println 'Response data: -----'
  System.out << reader
  println '\n--------------------'
}