iOS-使用AFN的DELETE请求遇到的坑

事情是这样的:我们公司的项目中有地方用到删除功能,服务器端给提供了删除接口 使用的是delete请求方式,我度娘查看了delete的相关问题写的都很少,然后自己摸索二次封装了delete。然后传参,服务器端要传的是类似post请求的body体中的数据 也就是传一个字典过去 ,那么我就把字典给他传过去呗,结果是服务器死活收不到这个我传过去的字典数据,然后就是我跟后台联调,发现我传过去的是将字典拆分后拼接到了url后面 ,而服务器这边所需要的并不是 拼接后的数据 ,这样问题就来了,怎么才能不拼接?于是又去度娘,发现 delete请求和get请求类似 都是将params 进行拼接的,怎么办?只能去找服务器改他那的接收方式?然后我就在 afn的post请求源码中处理拼接的地方打断点查看 并与delete方法进行对比 发现这个方法:

#pragma mark - AFURLRequestSerialization
- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request

                               withParameters:(id)parameters

                                        error:(NSError *__autoreleasing *)error

{
    NSParameterAssert(request);
    if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
        return [super requestBySerializingRequest:request withParameters:parameters error:error];
    }
}
如果 是post的话就会走外面 如果是delete的话就会走if里面所以我想 是不是可以 设置HTTPMethodsEncodingParametersInURI这个属性来操作params使其不拼接,又改动 后 与后台联调

 成功了 代码是这样的:

manager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithArray:@[@""]];

HTTPmethod 其中默认的是 GET,DELETE,HEAD 我不知道这样改动会带来哪些其他的问题 如果有哪位大神知道这个问题还请帮我改进下。感谢了!

最后说下这个问题的其他解决办法就是让服务器更改他那边的接收数据的方式,类似于get请求那种接收方式就ok啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值