Groovy httpbuilder发布列表params

Groovy httpbuilder发布列表params

问题描述:

我试图从我的grails项目中使用web服务。我使用的是httpbuilder 0.7.2。以下是我的http客户端。Groovy httpbuilder发布列表params

static def webServiceRequest(String baseUrl, String path, def data,method=Method.GET,contentType=ContentType.JSON){ 

      def ret = null 
      def http = new HTTPBuilder(baseUrl) 
      http.request(method, contentType) { 
       uri.path = path 
       requestContentType = ContentType.URLENC 
       if(method==Method.GET) 
        uri.query = data 
       else 
        body = data 
       headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4' 
       response.success = { resp, json -> 
        println "response status: ${resp.statusLine}" 
        ret = json 
        println '--------------------' 
       } 
      } 
      return ret 

    } 

问题来了,当我试图发送这样的事情:

def input = [:] 
input['indexArray'] = [1,5] 

API调用

def response = webServiceRequest(url,uri,input,Method.POST) 

当我打印后数据的价值我服务器它只显示列表的最后一个值。

{ “indexArray”: “5”}

应该同时显示1和5

+0

为什么使用ContentType.URLENC而不是ContentType.JSON?没有这个, –

+0

服务器没有收到任何东西 –

如果你想使用的contentType应用/发送JSON数据的X WWW的形式,进行了urlencoded您必须在将数据添加到主体之前显式转换数据,您可以使用(数据为JSON)。