Grails从请求中提取身体数据

时间:2013-12-12 13:27:22

标签: java grails model-view-controller httprequest

我有一些控制器(ExampleController)通过content-type application/x-www-form-urlencoded接收请求。

我需要使用POST请求将所有请求数据发送到其他网址。数据需要与收到的顺序相同。

问题是内容不匹配,因为request.getParameterMap()会破坏数据的顺序。 在ExampleController

def method(){ 
    String s = request.reader.text //this is empty, need a way to read this text
    Map<String, String[]> vars = request.getParameterMap() //it's not good for me   because the map is unordered map 
    //but it full of data

}

哪个不起作用。

我需要类似的东西:

byte[] data = request.getRequestData()
wr.write(data)

btw我试过了:

InputStream = request.getInputStream()
byte [] bytes = inputStream.getBytes()

我也试过

String s = request.reader.text

但字符串为空。 我认为主要问题是grails机制在控制器启动之前读取输入流并将数据放在参数hashMap中。有没有办法撤消它?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

请尝试使用request.reader.text。

def result = request.reader.text.split('&').inject([:]) { map, token ->
  token.split('=').with { map[it[0]] = it[1] }
  map
}