我有一些控制器(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中。有没有办法撤消它?
非常感谢任何帮助
答案 0 :(得分:1)
请尝试使用request.reader.text。
def result = request.reader.text.split('&').inject([:]) { map, token ->
token.split('=').with { map[it[0]] = it[1] }
map
}