Retrofit的使用教程(一)
1
2
3
4
|
interface SimpleGET{
@GET ( "/" ) //表明是GET方式. "/"会拼接在setEndpoint(url)中url(主机地址)的后面.
Response getResponse(); //可以简单的理解为网络访问完把Response转换为一个对象.这里没有转换,还是Response.
}
|
1
2
3
4
5
6
7
8
9
10
|
String url= "http://tieba.baidu.com" ;
RestAdapter adapter= new RestAdapter.Builder().setEndpoint(url).build(); //setEndpoint(url)设置网络访问地址的主机地址
SimpleGET create = adapter.create(SimpleGET. class ); //retrofit会生成上面的SimpleGET接口的一个的实例.
Response response = create.getResponse();
int status = response.getStatus(); //返回码
try {
InputStream in = response.getBody().in(); //response的输入流.看到网络访问的输入流都很熟悉吧.想转换成字符串还是json还是图片就看服务器给的是什么了.
} catch (IOException e) {
e.printStackTrace();
}
|
1
2
3
4
|
interface SimplePOST{
@POST ( "/android" ) //表明是使用Post方式进行访问. 并且会把后面的路径拼接到主机名的后面-->拼接到setEndpoint(url)中的url的后面.
Response getResponse();
}
|
1
2
3
4
5
6
7
8
9
10
|
String url= "http://tieba.baidu.com" ;
RestAdapter adapter= new RestAdapter.Builder().setEndpoint(url).build(); //和上面post后面的路径拼接,想当于访问http://tieba.baidu.com/android
SimplePOST create = adapter.create(SimplePOST. class );
Response response = create.getResponse();
int status = response.getStatus();
try {
InputStream in = response.getBody().in();
} catch (IOException e) {
e.printStackTrace();
}
|
1
2
3
|
interface GitHub {
@GET ( "/repos/{owner}/{repo}/contributors" )
List<Contributor> contributors( @Path ( "owner" ) String owner, @Path ( "repo" ) String repo);
|
1
2
3
4
|
private static final String API_URL = "https://api.github.com" ;
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(API_URL).build();
GitHub github = restAdapter.create(GitHub. class );
List<Contributor> contributors = github.contributors( "square" , "retrofit" ); //相当于对路径中{}部分进行动态替换. 相当于访问https://api.github.com/repos/square/retrofit/contributors
|
1
2
3
4
5
6
7
8
9
|
static class Contributor { //一个pojo类(Plain Ordinary Java Object)简单的Java对象-->相比javaBean更简单.
String login;
int contributions;
}
interface GitHub {
@GET ( "/repos/{owner}/{repo}/contributors" )
List<Contributor> contributors( @Path ( "owner" ) String owner, @Path ( "repo" ) String repo);
}
|
1
2
3
4
5
6
7
|
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(API_URL).build(); //默认设置了GsonConverter的转换器.把response直接解析为一个POJO对象.
GitHub github = restAdapter.create(GitHub. class );
//访问这个地址返回的是一个JsonArray,JsonArray的每一个元素都有login和contributions这2个key和其对应的value.提取出来封装进POJO对象中.
List<Contributor> contributors = github.contributors( "square" , "retrofit" );
for (Contributor contributor : contributors) {
Log.v( "retrofit" , contributor.login + " (" + contributor.contributions + ")" );
}
|
JakeWharton (487)
pforhan (48)
edenman (40)
..........
[
{
"login": "JakeWharton",
"id": 66577,
............
"site_admin": false,
"contributions": 487
},
{
"login": "pforhan",
.............
"site_admin": false,
"contributions": 48
},
{
"login": "edenman",
"................
"site_admin": false,
"contributions": 40
},
...........
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
class StringConverter implements Converter{
@Override
public Object fromBody(TypedInput input, Type type) throws ConversionException { //response输入流到对象的转换,
try {
InputStream in = input.in(); //获取了输入流,就可以根据意愿随意转换了.
String str = convertStream2String(in);
return str;
} catch (IOException e) {
e.printStackTrace();
}
return null ;
}
private String convertStream2String(InputStream in) throws IOException { //inputStream转换为String
BufferedReader reader= new BufferedReader( new InputStreamReader(in));
StringBuilder sb= new StringBuilder();
String line= null ;
while ((line=reader.readLine())!= null ){
sb.append(line);
sb.append( "\n" );
}
return sb.toString();
}
@Override
public TypedOutput toBody(Object obj) { //对象到输出流的转换
return null ;
}
}
|
1
2
3
4
|
interface StringClient {
@GET ( "/" )
String getString(); //方法的返回值是String,需要StringConverter转换器Converter把Response转换为String.
}
|
1
2
3
4
5
|
String url= "http://tieba.baidu.com" ;
RestAdapter adapter= new RestAdapter.Builder().setEndpoint(url).setConverter( new StringConverter()).build();
StringClient create = adapter.create(StringClient. class );
String str = create.getString();
|
第二片地址http://www.cnblogs.com/laiqurufeng/p/4484889.html
第三片地址http://www.cnblogs.com/laiqurufeng/p/4484916.html
Retrofit的使用教程(一)相关推荐
- Retrofit的使用教程(二)
Query注解 interface QueryGET{@GET("/sheet")String getString(@Query("name")String n ...
- android实例教程_改造Android示例教程
android实例教程 Welcome to Retrofit Android Example Tutorial. Today we'll use the Retrofit library devel ...
- Android开发之第三方框架使用汇总
1. image loading 框架: 1.1 Glide1.2 Picasso1.3 后续更新... 2.网络框架: 2.1 xUtil32.2 OkHttp32.3 Retrofit2.4 后续 ...
- Android进阶-第三方框架使用汇总
image loading 框架: 1.1 Glide1.2 Picasso1.3 后续更新... 2.网络框架: 2.1 xUtil32.2 OkHttp32.3 Retrofit2.4 后续更新. ...
- Retrofit 2简单使用教程
作者: Chike Mgbemena 原文地址:https://code.tutsplus.com/tutorials/getting-started-with-retrofit-2–cms-2779 ...
- Retrofit教程
(源码教程): https://www.jianshu.com/p/0c055ad46b6c 正文 Retrofit简介 Rrotrofit是一个RESTful架构的HTTP网络请求框 ...
- Retrofit 2.0 使用教程
前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天,我将献上一份非常详细Retrofit v2.0的使用教程,希望你们会 ...
- 详细的 Retrofit 2.0 使用教程
这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解) 前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天, ...
- Android Retrofit使用教程(三):Retrofit与RxJava初相逢
上一篇文章讲述了Retrofit的基本使用,包括GET,POST等请求.今天的文章中Retrofit要与RxJava配合使用. 了解RxJava RxJava有种种好处,我不在这里一一讲述.这里我只给 ...
最新文章
- 春愁(shunshu)—Mrs. Green Apple (歌词、汉译、罗马音)
- 2021-03-01 Matlab 多项式的根求解
- Service Broker in SAP Gateway and Kubernetes
- [CQOI2015]选数(杜教筛)
- python pdf报告_python生成pdf报告、python实现html转换为pdf报告
- 基于JAVA+Servlet+JSP+MYSQL的失物招领系统
- ROS2——Windows上的安装笔记
- MS SQL Server 2000 按日期自动备份
- AI公开课丨胡伟:基于表示学习的知识图谱实体对齐研究
- 2022 VMware下载安装教程
- 主流数据库之MySQL函数和MySQL数据操作基础知识及示例
- swfupload java实例_swfupload例子
- 使用搜狗新闻语料库,训练word embeding
- 推荐一个不错的在线制图网站---ProcessOn
- 读书笔记-财务报表资本结构分析
- 全国计算机软考网络管理员考试大纲(2012)
- iOS 证书管理、验证、打包流程
- Vivo手机实现录音转文字的方法,图文步骤详解,特别简单
- ARM中的字、半字、字节是多少位?
- gis空间校正没反应_使用ArcGIS进行空间校正的步骤(矢量数据)
热门文章
- 【SpringCloud系列】服务注册与发现 - Eureka Server源码分析(2)
- wow转服服务器不显示,魔兽世界怀旧服13日第二批免费转服详情 可以转服到哪些服务器?...
- 用myclipse运行项目时报launching client错误!
- OC中的数组:NSArray
- Stay Hungry Stay Foolish的真正含义
- “联创黔线”杯大数据应用创新大赛
- 分类classify
- 南加州计算机博士学几年,2020年南加州大学读博要多久
- 笔记:《机器学习训练秘籍》-吴恩达deeplearningai微信公众号推送文章
- leaflet-自定义底图