关于retrofit进行网络请求时发生的奇怪错误
来源:互联网 发布:移动宽带看网络电视 编辑:程序博客网 时间:2024/05/22 09:06
在我们进行的网络请求中,服务器得到的数据是乱的,具体混乱格式及情况如下:
1.api接口如下:
2.创建retrofit实例:
3.网络工具类的单例化
4.提供一个对外的方法
5.在activity里面调用api及网络工具类
然后我们传入一个map集合到getallcar方法里面,然后服务器收到了一串乱码,然后我和后台对接了半天,发现原因如下:
1.后台接口有问题
2.后台收到数据没转码
3.网络框架有漏洞
4.我这边没转码
最后我们一一排查,发现
1是没有问题的,因为ios那边上传同样接口,并没有出现乱码的问题。排除这个问题
2这个方案的话,和后台交流之后,他同意转码,并且成功返回接口数据,但是如此将会导致其他前端访问数据出现问题,比如这一次它后台转码之后,web端访问数据时就出现了乱码。所以此方案不可行。
3.当排除前面这两种情况之后,到第三种时候,突然发现好傻,square公司不可能出现这种低级错误。所以,排除这个问题
4.最后一个解决方案,当然,到了这步确实解决了,不过试了很久才发现问题解决了。首先是我这边明文将map里面的元素转码,实验之后不可行。然后我开始用
@FormUrlEncoded + 请求参数为这方案接近正确,但是还是缺少最重要的一步,那就是添加请求头用来转码了,也就是:@FieldMap Map<String,Object> map 来解决
@Headers("Content-Type: application/json; charset=utf-8")最后,问题解决。
将api格式请求从:
@POST("traceList")Call<CarTraceListEntity> getCarTraceList(@QueryMap Map<String,Object> map);改为:
@FormUrlEncoded@Headers("Content-Type: application/json; charset=utf-8")@POST("traceList")Call<CarTraceListEntity> getCarTraceList(@FieldMap Map<String,Object> map);问题解决。
阅读全文
1 0
- 关于retrofit进行网络请求时发生的奇怪错误
- Retrofit进行网络请求
- 使用Retrofit进行网络请求
- retrofit第一次的网络请求eofException错误原因及解决
- Retrofit请求数据对错误以及网络异常的处理
- Retrofit请求数据对错误以及网络异常的处理
- Retrofit请求数据对错误以及网络异常的处理
- 关于retrofit/okhttp 网络差 重复请求的问题
- AndroidStudio下使用Retrofit进行网络请求
- 利用Retrofit进行各种网络请求
- Retrofit+RxJava进行网络请求流程解析
- retrofit简单的网络请求
- 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- 关于retrofit的Post请求
- 网络请求发生错误: Unsupported Media Type
- 请求时发生417错误
- 使用Stetho调试Retrofit的网络请求
- Retrofit 简洁的网络请求神器
- POJ 3088 Push Botton Lock 笔记
- 论Java如何入门
- JSP在tomcat项目中部署后无法显示CSS和图片
- 上传50,000个实时数据点到Predix时序数据库
- caffe loss 损失权重问题
- 关于retrofit进行网络请求时发生的奇怪错误
- js图片点击转换
- C#基础知识
- android Sroll事件的一些坑
- A. Okabe and Future Gadget Laboratory
- T检验
- Mysql常用优化方案
- PHP中类的继承特性之方法的重载(覆盖)
- 设计模式(十八)composite