AFNetworking POST 请求参数保存在Body 中的解决办法

1)首先区分一下,get和post的区别

get方法,会将参数放到url中,属于透传,相对于post放到content中的安全性低

2)使用AFNetworking,默认HTTPMethodsEncodingParametersInURI里面包含的只有`GET`, `HEAD`, 和 `DELETE` .不知道情况的情况下使用POST方法的话,会将用户传递的参数放到Body里面,导致服务端JSP通过request.getParameters()获取不到参数。

3)通过xcode定位代码,发现在requestBySerializingRequest中会直接跳过

if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
        return [super requestBySerializingRequest:request withParameters:parameters error:error];
   }

直接走下面的步骤,然后将请求参数添加到body里面:

[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];

4)解决办法:

HTTPMethodsEncodingParametersInURI 包含POST方法

requestManager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithArray:@[@"POST", @"GET", @"HEAD"]];//一般的服务器不推荐使用put和delete,所以这里就没有添加

时间: 2024-11-03 21:46:06

AFNetworking POST 请求参数保存在Body 中的解决办法的相关文章

DELETE 请求参数保存在Body 中

NSMutableDictionary *parameter = [NSMutableDictionary dictionary];      NSString * url = [NSString stringWithFormat:signatureProxy,model2.scheduleId];    NSMutableURLRequest * req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];    r

Office 2007在安装过程中出错-解决办法

1, 可能是因为c:\program files\common files\microsoft Shared\web server Extensions\40\bin目录下缺少Fp4autl.dll,Fpencode.dll和Fp4awel.dll这三个文件导致的.可以从 windows xp的安装光盘中找到Fp40ext.cab ,把他解压出来,就可以找到这三个文件,将它们复制到bin文件夹下试试试了一下对我没用,继续搜2,运行regedit,打开注册表 找到HKEY_LOCAL_MACHIN

使用UdpAppender时出现了“使用了与请求协议不兼容的地址”的解决办法

最近在做一个东西,需要将log4net日志通过UDP传输到其他数据库,其中发送端就用了UdpAppender,但是运行时在控制台总是显示:使用了与请求协议不兼容的地址.解决办法:在C:\Windows\System32\drivers\etc这个目录下,找到hosts文件.把:# localhost name resolution is handled within DNS itself.# 127.0.0.1 localhost# ::1 localhost改为:# localhost nam

「Mac技巧」屏保设置不生效的解决办法

使用Mac的下伙伴有没有遇到过这样的问题,我们明明设置了屏保,但是根本不起作用,这是怎么回事呢?今天Macdown小编就带大家解决屏保设置不生效问题! https://www.macdown.com 其实是我们的节能设置中,设置的时间比屏保的时间长,所以在我们还没有启动屏保的时候,它就自动关闭了显示器. 我们可以将它调大一点,也可以点击“当显示器关闭时,防止电脑自动进入休眠”,这样就能防止电脑黑屏时,中断我们正在下载的东西. 当然,也有朋友在设置屏保的是很苦恼,感觉所有的时间不是自己想要.比如你

【转】无法将notepad++添加到打开方式列表中的解决办法

问题:想要设置notepad++为默认打开方式,却发现在点击browse找到notepad++.exe点击打开后没有在打开方式列表中找到notepad++. 原因:更新程序版本后程序的路径发生了变动.然而注册表中得文件路径并没有改变导致的. 解决办法: 1. 点击开始,输入regedit,点击回车 2.在注册表中找到 HKEY_CLASSES_ROOT 下面的 Applications   3.修改注册表 1).在Applications下面找到对应的程序名,我名为notepad++.exe,点

.net 4 安装未成功,无意中的解决办法!

公司 电脑是chost的系统,由于使用时间过长,重装纯净版系统的话,代价太大,故网上寻求各种解决办法! 安装.net 4 总是失败,查看百度,各种: WIN7系统哈哈跟我的问题一样,我的刚才解决了:1.开始->运行->net stop WuAuServ2.开始->运行->%windir%3.将文件夹SoftwareDistribution重命名为SDold4.开始->运行->net start WuAuServ之后再重新装.net4就能装了.我的也是开始装不了.net4

eclipse打断点只进入class文件中的解决办法

内容来源 https://www.cnblogs.com/scode2/p/8671908.html#undefined 是由于对应的Java类跟编译后的class文件,没有关联上, 解决办法: 在打断点调试的时候,如果发现进入到了class文件,先别着急关闭class文件,在该class文件中有个按钮,然后点击这个按钮,选择跟该项目对应的项目类型(java项目或者javaweb项目等)关联对应的工程,点击确定就行. 这样源码与class 文件就相关联了.然后会看到断点就会进入到相应的java文

使用afnetworking,请求参数json={}

首先需要导入jsonkit第三方包 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSDictionary *parameter = [NSDictionary dictionaryWithObjectsAndKeys:@"13817676763",@"UPHONE",@"123",@"UFPWD",@&quo

跨域请求,关于后端session会话丢失的解决办法

目前使用前后端分离的模式开发,后端提供跨域接口.前端jsonp调用,绑定数据,但是在该站点下有个人中心模块存在的情况下,服务端的session会话会被跨域请求覆盖改掉 大家都知道tomcat使用cookie中jsessionid来区分客户端session会话 跨域请求接口恰恰有时候响应回来回改变该站点下的jsessionid值,导致服务器每次判断都是一个新的会话 以网站个人中心模块来说,每一个跨域jsonp请求,都会Response 一个cookie值,SET-COOKIE:JSESSIONID