jFinal解析IOS post请求获取不到参数问题

Shydow 发布于 2016/10/18 16:13
阅读 602
收藏 0

以前用struts没发现android和ios请求有什么不同,直接在Controller设置同名属性,设置set方法就ok了,最近想将一些小项目用jfinal实现,发现一个烦人的问题。

web、android上的get请求、post请求,jfinal均可以用getPara获取到参数

ios上的get请求,jfinal可以用getPara获取到参数,但是post请求获取的参数就是null

网上有一篇帖子http://www.tuicool.com/articles/vUZJ32r,貌似ios的post请求格式比较诡异。

做了个测试,在jfinal设置一个全家的拦截器,获取请求的参数

String tpData = HttpKit.readData(request);

发现ios的post请求:

 --Boundary+1916537BAF0C47C8
Content-Disposition: form-data; name="c"

233441235
--Boundary+1916537BAF0C47C8
Content-Disposition: form-data; name="p"

1
--Boundary+1916537BAF0C47C8
Content-Disposition: form-data; name="s"

5
--Boundary+1916537BAF0C47C8--

而其他jfinal能够正常获取的请求的值是:c=233441235&p=1&s=4

请问jfinal是否存在获取ios post请求获取不到参数的问题,各位大虾都是怎么用同一个action处理来自不同平台请求的,不会每个都做判断平台吧?

注:ios请求

 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    NSURLSessionDataTask *dataTask = [manager POST:urlString parameters:parameters constructingBodyWithBlock:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSArray *array = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
        completion(array);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error = %@",error.description);
    }];

加载中
1
S
Shydow
IOS端的请求用了一个框架AFHTTPSessionManager ,该框架用于传file比较方便,所以其post请求的type是“multipart/form-data”,它不是基本的http请求,详见:http://blog.csdn.net/five3/article/details/7181521,针对这种没file的场景,可以先getfile,然后再用getpara方法获取参数,详见:http://www.thinksaas.cn/topics/0/396/396070.html,getfile会提示缺少jar包,解决见:http://www.oschina.net/question/1787637_157890?sort=time
0
JFinal
JFinal

       这个问题很诡异,貌似很久以前有个人碰到过,忘了怎么解决了。有一点是可以肯定的,jfinal 的 getPara(...) 系列的方法仅仅是转调下层的 HttpServletRequest.getParameter(...) ,是不可能有错误的,出错的可能性是底层的 jetty 或者 tomcat 无法解决这个请求,再一个可能是 ios 客户端发送过来的数据不符合 http 规范

      这个问题隐约记得是  ios 客户端的问题,建议你在客户端多尝试一下别的方式发起请求,或者改改参数之类的

9
90worker
回复 @Shydow : 怎么解决的请问
S
Shydow
谢谢提醒,问题解决了。解决如下
返回顶部
顶部