iOS中使用AFN的delete请求遇到的坑

来源:互联网 发布:北京知蜂堂上海店 编辑:程序博客网 时间:2024/05/23 01:15

事情是这样的:我们公司的项目中有地方用到删除功能,服务器端给提供了删除接口 使用的是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.HTTPMethodsEncodingParametersInURIcontainsObject:[[requestHTTPMethod] uppercaseString]]) {

        return [superrequestBySerializingRequest:requestwithParameters:parameterserror:error];

    }

如果 是post的话就会走外面 如果是delete的话就会走if里面所以我想 是不是可以 设置HTTPMethodsEncodingParametersInURI这个属性来操作params使其不拼接,又改动 后 与后台联调

 成功了 代码是这样的:

manager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSetsetWithArray:@[@""]];

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

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


0 0
原创粉丝点击