博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YTKNetwork使用application json方式传递参数
阅读量:6200 次
发布时间:2019-06-21

本文共 1957 字,大约阅读时间需要 6 分钟。

YTKBaseRequest的requestSerializerType属性默认值是YTKRequestSerializerTypeHTTP,对应的Content-Type类型是application/x-www-form-urlencoded,form表单数据需要被编码为key/value格式发送到后台,一般的使用方式如下(以编辑车牌接口为例):

@implementation SCCarParkUpdateCarRelationAPI- (NSString *)requestUrl{    return [NSString stringWithFormat:@"carParkApplication/%@/updateCarRelation", self.orderId];}- (YTKRequestMethod)requestMethod{    return YTKRequestMethodPOST;}- (id)requestArgument{    return self.params;}- (void)setCarLicenceList:(NSArray *)carLicenceList{    // 服务列表信息    NSData *carLicenceListData = [NSJSONSerialization dataWithJSONObject:carLicenceList options:NSJSONWritingPrettyPrinted error:nil];    NSString *carLicenceListStr = [[NSString alloc] initWithData:carLicenceListData encoding:NSUTF8StringEncoding];    [self.params setValue:carLicenceListStr forKey:@"carLicenceList"];}@end复制代码

使用json方式发送数据到后台: 重写requestSerializerType方法,返回YTKRequestSerializerTypeJSON;然后requestArgument方法直接返回对象即可,如下:

@implementation SCCarParkUpdateCarRelationAPI- (NSString *)requestUrl{    return [NSString stringWithFormat:@"carParkApplication/%@/updateCarRelation", self.orderId];}- (YTKRequestMethod)requestMethod{    return YTKRequestMethodPOST;}- (id)requestArgument{    return self.carLicenceList;}- (YTKRequestSerializerType)requestSerializerType{    return YTKRequestSerializerTypeJSON;}复制代码

需要注意的是:

requestArgument方法必须返回能转化成json的对象,要求如下:

顶层对象必须是NSArray或者NSDictionary

所有的对象必须是NSString、NSNumber、NSArray、NSDictionary、NSNull的实例

所有NSDictionary的key必须是NSString类型

数字对象不能是非数值或无穷

还有一点,如果使用MJExtension中的mj_jsonObject把对象转换成json对象时,必须保证该对象不遵守任何协议,不然转换是不成功的,issue请见:

其它注意事项:

其它注意事项:

1.application/json可使用的http方法有post/put/delete。

get操作没有body部分,只能以key/value形式传递参数拼接在url中

post/put/delete有body部分,与服务器传递信息,都放在body中

2.是否使用application/json方式进行传值,需要与后台约定好

3.可对单个接口使用application/json方式进行传值,不影响到其它的接口

4.当application/json方式进行传值时,后台框架上使用了@RequestBody注解,读取请求body里面的值直接映射成参数,框架完成了这个事。

转载于:https://juejin.im/post/5c6baff5f265da2d89632474

你可能感兴趣的文章
关于微服务架构的思考
查看>>
MacBook常用快捷键
查看>>
高性能mongodb之执行计划
查看>>
算法与数据结构大系列 - NO.1 - 插入排序
查看>>
顺序加载图片方法
查看>>
In a nutshell: Tags are for overloading, for optimization.
查看>>
前端小助手 小程序
查看>>
offsetWidth/offsetHeight、offsetLeft/offsetTop、offsetParent
查看>>
开发者生存技能 - 代码规范篇
查看>>
2018.11.19秋招末第二波前端实习/校招小结
查看>>
HTTP协议原理和深入
查看>>
页面元素之「¥」符号的使用原则和技巧
查看>>
让电机动起来!Arduino驱动步进电机教程
查看>>
iOS开发年薪30W+,这样做就好!【经验篇】
查看>>
JS学习理解之闭包和高阶函数
查看>>
Koa2 中间件原理解析 —— 看了就会写
查看>>
InnoDB透明页压缩与稀疏文件
查看>>
Selenium实战教程系列(一)--- 浏览器操作
查看>>
阿里P7攻城狮总结出来的这本书的精华
查看>>
用 pyinstaller 打包含xpinyin 库的Python程序
查看>>