gpt4 book ai didi

grails - 当表单Content-Type = text时,Grails表单POST缺少参数

转载 作者:行者123 更新时间:2023-12-02 16:03:14 27 4
gpt4 key购买 nike

我有一个 Controller Action ,其中第三方应用程序发布数据,
问题是POST请求参数为空,这是由于POST Content-Type ='text'。
如果我模拟(使用Chrome Rest Console插件)相同的POST,且Content-Type ='application / x-www-form-urlencoded'
然后正确填充了请求参数。

如何启用Content-Type ='text'的POST数据?

最佳答案

您可以使用访问原始POST数据

request.reader.text

据我所知(可能是错误的),grails不会解析此内容类型,因为它最终使用 HTTPServletRequest,后者仅解析 www-form-urlencoded,因为这是通过HTTP传递变量值的常规方法。

您可以使用grails过滤器轻松模拟所需的行为,例如:
class TextRequestFilters {
def filters= {
textRequestFilter(controller: '*', action:'*') {
before = {
if(request.post && request.format == 'text') {
String postBody = request.reader.text
String[] variables = postBody.split('&')
variables.each { String variable ->
String[] parts = variable.split('=')
String key = URLDecoder.decode(parts[0], request.characterEncoding)
String value = URLDecoder.decode(parts[1], request.characterEncoding)
params[key] = value
}
}
}
}
}
}

笔记:

您可能希望从此过滤器中排除 Assets 请求等。

内容类型应该为 text/plain,因为这是grails即时转换为文本格式的结果,但是我相信您可以在 Config.groovy中进行设置。

关于grails - 当表单Content-Type = text时,Grails表单POST缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981640/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com