android Retrofit 注意事项
来源:互联网 发布:java相关文献 编辑:程序博客网 时间:2024/05/18 16:17
1、在Retrofit使用中,获取服务器数据可能会出现以下错误:org.json.JSONException: End of input at character 0 of
原代码如下:
@Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { Log.d(TAG, response.body().string()); String a=response.body().string(); try { JSONObject forecast = new JSONObject(a); } catch (JSONException e) { e.printStackTrace(); } } else { alertUserAboutError(); } }此原因是因为a为“”,但我看了打印日志,response.body().string()是有值的,百思不得解,所以debug了以下,a还真是“”,为什么打印出来是有值,到a就没值了呢?Google了以下,解释如下:
down vote
Answer : Response object should of Generic type - ResponseBody
.
See below Correct code for reference.
Now response.body()
method will return object ResponseBody
i.e.
ResponseBody rb = response.body(); rb.string();
Here ResponseBody have method string()
which returns String
object but internally string()
method calls Util.closeQuietly(source);
which makes response empty once method string()
gets called.
Just remove Log.d(TAG, response.body().string());
and follow below code.
Reference - okhttp3.ResponseBody.java
error : org.json.JSONException: End of input at character 0
Correct code :
@Overridepublic void onResponse(Call call, Response<ResponseBody> response) throws IOException { if (response.isSuccessful()) { String remoteResponse=response.body().string(); Log.d(TAG, remoteResponse); try { JSONObject forecast = new JSONObject(remoteResponse); } catch (JSONException e) { e.printStackTrace(); } }}
其实就是说,在response.body()的string()方法里,string()就执行了Util.closeQuietly(source)方法,将string设置为“”了,解决方法就是用1个string把它保留下来。
阅读全文
0 0
- android Retrofit 注意事项
- retrofit使用注意事项
- [Android] Retrofit 源码分析之 Retrofit 对象
- 【Android】Retrofit的使用(1)-Retrofit介绍
- Android Rxjava和retrofit
- [Android] Retrofit初步
- Android - Retrofit 基础使用
- Android Retrofit使用指南
- Android--Retrofit浅入深出
- Android 初识Retrofit
- Android Retrofit + RxAndroid
- Android Retrofit 2.0
- Android 初识Retrofit
- Android Retrofit 2.0使用
- Android Retrofit源码解析
- Android Studio导入Retrofit
- Android 初识Retrofit
- Android Retrofit框架解析
- 嵌入式Linux初始化QAT失败 及 问题 解决
- 微信开发最重要的一步(服务器配置)
- 侧滑
- ServercnxnFactory启动
- pdf.js 在连续三天的坑当中终于趟出来了
- android Retrofit 注意事项
- Image onload 事件
- LintCode 两数之和
- 测试一下
- Android 监听应用内Activity生命周期
- java类对象自然顺序的相等一致性
- Kafka学习整理四(Producer配置)
- 《Hibernate学习笔记四》:Hibernate核心接口介绍
- 图片隐写之jpg后面连接文件