使用AFNetworking上传图片遇到的问题
来源:互联网 发布:c 的sms源码 编辑:程序博客网 时间:2024/04/29 19:00
1. The data couldn’t be read because it isn’t in the correct format
最近一个项目,在请求接口时,一直有问题,使用get请求可以正常请求到数据,而post则无法获取数据
控制台输出:
大意就是数据格式不对,无法读取!后台也接收不到我传递的参数;使用Charles抓包会发现是这样的信息:
400 Bad Request!
我一看是非法的网络请求,以为是我的问题,就一直在我这边找原因,最后才发现,这是因为我发送请求时发送的字符串,和后台需要的字符串格式不一致,发送请求时,后台需要的是text文本格式,而我发送的是json格式,导致后台无法识别,接收不到数据!
后来发现我所用的封装类里的请求头,有如下设置:
即,默认是使用json传输数据的!把第二个注释掉,即使用默认的Content-Type,
并在发送请求时设置发送的字段为文本格式,即:
本以为会解决问题,但事实还是请求不到数据!!最后不得已使用原生的AFNetworking进行测试,post正常拿到了数据,后来对比两者的区别,除了上面的改动以外,请求返回的数据也要改为文本,即:
总之,此次网络请求的异常,是由于请求和响应的文本格式没有统一,导致参数无法正常传递,数据无法正常读取!不过,竟然不知json传输,我也是醉了...
2. Invalid parameter not satisfying: body
模拟器运行后控制台输出:
真机的话会输出如下信息:
而且crash的地方也不一样:
模拟器crash到自动释放池
真机的话carsh到AFN的底层:
其实,最主要的信息就是:Invalid parameter not satisfying: body (无效的参数:body)
问题就出在body这个参数上,模拟器上看不出什么头绪,请求参数中也没有body这个参数;但是在真机上的crash信息可以看出一些头绪:他是crash到了这个方法里
可以看到body的类型是NSData,而设置的请求参数中,只有要发送的照片数据是NSData类型,是不是照片的问题呢?进到AFN的底层可以发现,AFN上传图片主要是用到了这个方法:
在这个方法里调用了
正是,程序crash的地方;
其实,打断点调试后也能发现传入的照片数据为nil,问题的根源找到了,问题也就解决了!!!
以上内容转自 http://blog.csdn.net/lqq200912408/article/details/50520631
- 使用AFNetworking上传图片遇到的问题
- 使用AFNetworking上传多组图片时遇到的error
- AFNetworking上传遇到的小问题
- 使用AFNetWorking 上传图片
- 使用AFNetworking上传图片
- 使用AFNetworking (2.2.3)遇到的问题
- 使用AFNetworking (2.2.3)遇到的问题
- 使用AFNetworking (2.2.3)遇到的问题
- [iOS]AFNetworking使用遇到的问题总结
- AFNetWorking 3.0 使用遇到的问题
- 关于AFNetworking上传图片问题
- AFNetworking批量上传图片问题
- 图片上传遇到的问题
- 使用AFNetworking进行图片上传
- 使用AFNetworking进行图片上传
- 使用SmartUpload 上传图片时所遇到的问题
- Spring中使用kindeditor上传图片时遇到的问题
- iOS图片上传-AFNetWorking的图片上传
- ABAP数据字典和数据表的读取
- Bootstrap内容提要
- jquery的$().each,$.each的区别
- spring-quartz普通任务与可传参任务
- Linux下chkconfig命令详解
- 使用AFNetworking上传图片遇到的问题
- JSP内置对象(下)
- mybatis的jdbcType什么时候用?
- 【jQuery】简单的点击删除按钮清空输入框的内容
- 数字证书基础知识解析和数字安全证书功能介绍
- Ros自定义消息
- 关于PostThreadMessage和GetMessage
- HTML概括
- 浅谈CSRF攻击方式