iOS 解决AFN请求失败,接口调用失败,如何传json参数到后台

开始一个新的项目的时候,可能会遇到不同的后台.不同的后台也导致传参的方式不一样.很多时候接口调用不成功就是因为传参方式变化.(其他404,500等错误我们不做讨论,主要说明因为传参不对导致失败的现象)我参与了很多项目的开发.当然后台也不一样.每次第一次调用接口失败的时候,就一万个草泥马奔腾而过.因为很多时候跟咱们最常见的传参方式不一样.沟通起来麻烦.不知道的后台还以为你连个接口都不会调用.(不过脸皮要厚,调不通就得麻烦他.告诉自己,接口调用失败就是他的问题,哈哈)   不论是谁的问题,解决问题是关键.解决了第一次调用,封装好了就好用了.  我就把我遇到的几种调用说说

1.常见传参方式   传入字典.相信大家对这个是特别熟悉了

NSDictionary *dataDic = @{@"call_name":@"sp_tab_user_register",@"data":strDic};

直接传入AFN.的parameters   这个不多讲.


2. 后台告诉你说你传参要传这种格式  http://www.yiwen.cn/Y/ywz2/sp_yw_back_interface?inParameter={"call_name": "*****","data":*****}

下面是传参说明:


AFN传参的时候就是传字典,你传其他的也没有用.分析一下URL.   问号❓ 后面是inParameter.说明这个是个key.  至于{"call_name": "*****","data":*****}  很明显是一串字符串.也就是说我们需要创建一个字典,然后转换成字符串.并作为inParameter的value.NSDictionary *dic=@{

@"call_name":@"xxxxx",

@"data":@"xxxx"}

NSString* jsonStr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:paraM options:0 error:nil] encoding:NSUTF8StringEncoding];

最终传入的参数:

NSDictionary *para = @{@"inParameter":jsonStr};


正确调用方式,代码截图:


iOS 解决AFN请求失败,接口调用失败,如何传json参数到后台_第1张图片

第三种:后台告诉你要传入json数据.你直接使用常用的方式就会调用失败.我暂时没有利用AFN解决这个问题.后续再来解决更新文章.这里我推荐一个方法.这个json数据需要你传入在HTTPBody里面传过去,这样就可以调用成功.亲测有效.

正确调用方式,代码截图:


iOS 解决AFN请求失败,接口调用失败,如何传json参数到后台_第2张图片

另外讲一下.最近调用接口的时候遇到了一个问题就是在网页上或者https post请求工具上都能正常请求获取数据,但是在项目里面用AFN调用就是回调失败.这里报的错误是 -1016

在进行网络请求时出现-1016 是因为只支持text/json,application/json,text/javascript你可以添加text/html或其他  这个地方报错的时候会告诉你缺少何种种类,仔细看看报错的信息.我在这里就是缺少了text/plain.  加上之后就完美解决了.text/plain 这个在错误信息里面也是出现了的.

instance.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html",@"text/plain",nil];

有问题可直接咨询我,欢迎在评论区指出不足,或者优化建议    +QQ648731281  微信+17723566468  备注直接写  

你可能感兴趣的:(iOS 解决AFN请求失败,接口调用失败,如何传json参数到后台)