android 返回字符串,android – 如何从异步回调使用Retrofit返回String或JSONObject?
我想到了。这是尴尬,但它是非常简单…临时解决方案可能是这样的:
public void success(Response response, Response ignored) {
TypedInput body = response.getBody();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(body.in()));
StringBuilder out = new StringBuilder();
String newLine = System.getProperty("line.separator");
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
out.append(newLine);
}
// Prints the correct String representation of body.
System.out.println(out);
} catch (IOException e) {
e.printStackTrace();
}
}
但是如果你想直接回调更好的方法就是使用Converter。
public class Main {
public interface ApiService {
@GET("/api/")
public void getJson(Callback callback);
}
public static void main(String[] args) {
RestAdapter restAdapter = new RestAdapter.Builder()
.setClient(new MockClient())
.setConverter(new StringConverter())
.setEndpoint("http://www.example.com").build();
ApiService service = restAdapter.create(ApiService.class);
service.getJson(new Callback() {
@Override
public void success(String str, Response ignored) {
// Prints the correct String representation of body.
System.out.println(str);
}
@Override
public void failure(RetrofitError retrofitError) {
System.out.println("Failure, retrofitError" + retrofitError);
}
});
}
static class StringConverter implements Converter {
@Override
public Object fromBody(TypedInput typedInput, Type type) throws ConversionException {
String text = null;
try {
text = fromStream(typedInput.in());
} catch (IOException ignored) {/*NOP*/ }
return text;
}
@Override
public TypedOutput toBody(Object o) {
return null;
}
public static String fromStream(InputStream in) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String newLine = System.getProperty("line.separator");
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
out.append(newLine);
}
return out.toString();
}
}
public static class MockClient implements Client {
@Override
public Response execute(Request request) throws IOException {
URI uri = URI.create(request.getUrl());
String responseString = "";
if (uri.getPath().equals("/api/")) {
responseString = "{result:\"ok\"}";
} else {
responseString = "{result:\"error\"}";
}
return new Response(request.getUrl(), 200, "nothing", Collections.EMPTY_LIST,
new TypedByteArray("application/json", responseString.getBytes()));
}
}
}
如果你知道如何改进这个代码 – 请随时写下来。
android 返回字符串,android – 如何从异步回调使用Retrofit返回String或JSONObject?相关推荐
- android 表情字符串,Android 显示输入法中的emoji表情以及String字符串转码
实现用原生键盘输入表情并显示,有两种办法: 发送时将String字符串转换为Unicode编码字符串,显示接收的列表时用Unicode编码字符串转化为String字符串 发送时将String字符串转换 ...
- .net mvc actionresult 返回字符串_ASP.NET Core中的Action的返回值类型
在Asp.net Core之前所有的Action返回值都是ActionResult,Json(),File()等方法返回的都是ActionResult的子类.并且Core把MVC跟WebApi合并之后 ...
- android显示字符串,Android自定义View用切图显示字符串
近期开发收音机有个需求,将频率值以图片的形式显示出来(如结尾效果图所示).然而,一开始用TextView写出来的效果太丑了,提交上去肯定不合格.于是乎我想到了写一个自定义View,将频率的数字切图排布 ...
- android加密字符串,Android 加密解密字符串详解
加密和解密的字符串: package eoe.demo; import java.security.SecureRandom; import javax.crypto.Cipher; import j ...
- python 返回字符串长度,当使用特殊字符时,Python返回错误的字符串长度
I have a string ë́aúlt that I want to get the length of a manipulate based on character positions an ...
- 接入了一个比较冷萌的第三方环迅h5网关支付,发起订单以及同步/异步回调(文档中也有官方微信支付宝接入代码资源哦)
虽然之前对于接入第三方支付有比较多的经验,但是这次接入环迅h5支付还是花了2天半的时间才整入到项目中,遇到了一个坑耽搁了一天半,下面讲一下接入注意事项 可能大家一般都是接入微信支付宝等官方支付(微信支 ...
- .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调、APM、EAP、TPL、aysnc、await
windows系统是一个多线程的操作系统.一个程序至少有一个进程,一个进程至少有一个线程.进程是线程的容器,一个C#客户端程序开始于一个单独的线程,CLR(公共语言运行库)为该进程创建了一个线程,该线 ...
- 异步实现方式一:异步回调
异步回调的实现依赖于多线程或者多进程 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用.同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单 ...
- paypal异步回调超时或无法请求到我们的服务器解决方案
业务场景 由于我司最近接入海外业务,支付使用了paypal支付,在线上跑一段时间后频频的收到用户反馈购买商品时用户已经支付了,系统却提示用户未购买成功.这导致用户体验相当的差,也影响到了业务正常运作. ...
最新文章
- Fortinet网络接入及安全方案配置步骤
- 关于数据的级联删除和更新
- java 远程登陆windows_使用Windows身份验证,JAVA连接到远程MSSQL
- java 过滤掉相同请求_java并发访问重复请求过滤问题
- html导航下拉菜单js点击显示不出来,使用JS做下拉菜单,子菜单不显示
- linux 操作系统安装配置vnc
- libsvm的安装和使用(1)
- mediasoup-client 和 libmediasoupclient 指南
- 侣信即时通讯系统的技术解析
- 鲜为人知的4个Python功能,用对了事半功倍
- Android文本框实现搜索和清空效果
- python-学生管理系统--3删除学生信息功能
- U盘空间明明够大,为什么却放不进去文件
- XPipe: Efficient Pipeline Model Parallelism for Multi-GPU DNN Training
- 三体归零者和盘龙鸿蒙,《三体》里归零者那么厉害,为什么不能逆转降维打击?...
- Springboot毕业设计毕设作品,微信垃圾分类小程序系统 开题报告
- Python人工智能之图片转文字识别
- fastjson 转下划线_Java开发里遇到的奇奇怪怪的需求---JSON键值驼峰转下划线的实现...
- FOFA网络空间搜索引擎
- 渲染的艺术:建筑效果图渲染的5个成功要素
热门文章
- some tips from baidu
- BCH潜力无限,引领区块链发展潮流
- Salesforce平台支持多租户Multi tenant的核心设计思路
- idea如何打war包?(部署tomcat后具有class文件)
- 在Oracle中IMP导入数据时,如何解决目标数据库字符不一致问题
- 树的方向,风决定;人的方向,自己决定
- CentOS 6.6安装Xtrabackup RPM提示缺少libev.so.4()
- IOS 中的MVC设计模式
- 来来来,个人blog第一弹——WordPress的Linux运行环境
- 根据当前时间获取本周,下周,上周日期