1. 在模块目录下的build.gradle

dependencies {
compile "com.squareup.retrofit2:retrofit:2.1.0"
compile "com.squareup.retrofit2:converter-gson:2.1.0"
}

2. 请求服务接口类-注解对应服务器接口

public interface HttpService {

    String SERVER_HOST = "http://xx.xx.xx.xx";
String CONTENT_PATH = "/xx"; class factory { private static volatile HttpService instance; public static HttpService getHttpService() {
if (instance == null) {
synchronized (HttpService.class) {
if (instance == null) {
Retrofit rf = new Retrofit.Builder().baseUrl(HttpService.SERVER_HOST).build();
HttpService hs = rf.create(HttpService.class);
instance = hs;
}
}
}
return instance;
}
} @GET(CONTENT_PATH + "/api/app/list?type=sense")
Call<ResponseBody> list(@Header("DAAUTH") String token); @GET(CONTENT_PATH + "/api/app/navlist?type=sense")
Call<ResponseBody> favlist(@Header("DAAUTH") String token); @GET(CONTENT_PATH + "/api/app/fav?type=sense")
Call<ResponseBody> fav(@Header("DAAUTH") String token, @Query("appid") String appid); @GET(CONTENT_PATH + "/api/app/unfav?type=sense")
Call<ResponseBody> unfav(@Header("DAAUTH") String token, @Query("appid") String appid); @GET(CONTENT_PATH + "/api/auth/login/")
Call<ResponseBody> loginByBasic(@Header("DAAUTH") String basic); @GET(CONTENT_PATH + "/api/auth/login/")
Call<ResponseBody> loginByToken(@Header("DAAUTH") String token); }

这里采用了一个单例模式,在定义的接口服务类中声明一个内部类factory来定义与返回HttpService的单例,内部直接使用了Retrofit进行创建。

3.具体调用

HttpService hs = HttpService.factory.getHttpService();
String token = "token 5cd61e10d242937a13ec40f671db19d5";
Call<ResponseBody> call = hs.list(token);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
ResponseBody body = response.body();
if (body != null) {
Log.d(TAG, body.string());
}
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
} @Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
if(t.getClass().equals(SocketTimeoutException.class)) {
Toast.makeText(MainActivity.this, "Connect Timeout...", Toast.LENGTH_SHORT).show();
String msg = t.getMessage();
Log.e(TAG, msg);
}
}
});

简单的使用方法,Retrofit有更多的接口方法可供使用。

Retrofit-入门使用的更多相关文章

  1. Retrofit 入门学习

    Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...

  2. Retrofit入门

    1 Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) ...

  3. Retrofit 入门和提高

    首先感谢这个哥们,把我从helloworld教会了. http://blog.csdn.net/angcyo/article/details/50351247 retrofit 我花了两天的时间才学会 ...

  4. Android开发 retrofit入门讲解 (RxJava模式)

    前言 retrofit除了正常使用以外,还支持RxJava的模式来使用,此篇博客讲解如何使用RxJava模式下的retrofit 依赖 implementation 'com.squareup.ret ...

  5. Android开发 retrofit入门讲解

    前言 retrofit基于okhttp封装的网络请求框架,网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装.如果你不了解OKhttp建议你还是先了解它在来学习 ...

  6. Retrofit 从入门到了解【总结】

    源码:https://github.com/baiqiantao/RetrofitDemo.git 参考:http://www.jianshu.com/p/308f3c54abdd Retrofit入 ...

  7. Retrofit 简介 wiki 文档

    简介 Type-safe HTTP client for Android and Java by Square, Inc. GitHub主页:https://github.com/square/ret ...

  8. Android开发 retrofit下载与上传

    前言 此博客只讲解retrofit下载与上传的使用,其实与其说是retrofit的下载与上传还不如说,依然是Okhttp的下载与上传.如果你需要了解retrofit入门请查看这篇博客(此博客不在详细讲 ...

  9. code style

    http://www.jianshu.com/p/0a984f999592# https://github.com/drakeet/LayoutFormatter https://github.com ...

  10. Android进阶:七、Retrofit2.0原理解析之最简流程【上】

    retrofit 已经流行很久了,它是Square开源的一款优秀的网络框架,这个框架对okhttp进行了封装,让我们使用okhttp做网路请求更加简单.但是光学会使用只是让我们多了一个技能,学习其源码 ...

随机推荐

  1. oracle--dump块信息操作

    01, 查看表 SQL> select * from tab where TNAME='T'; TNAME TABTYPE ----------------------------------- ...

  2. linux磁盘分区fdisk命令详解

    1.什么是分区?    分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁硬使用.分区表是一个硬盘分区的索引,分区的信息都会写进分区表.2.为什么要有多个分区? 防止数 ...

  3. Mac开发利器之程序员编辑器MacVim学习总结(转)

    一.关于Vim   Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神.至于两者到底哪个更好用,网络上两大派系至今还争论不休.不过,相比之下,Emacs更加复杂, ...

  4. Light Table 编辑器修改字体 更新

    view->command->use.behaviors 加上这一句  (:lt.objs.style/font-settings "Inconsolata" 14 1 ...

  5. Mongodb定时备份脚本和清除脚本

    Mongodb用的是可以热备份的mongodump和对应恢复的mongorestore,在linux下面使用shell脚本写的定时备份,代码如下 1.定时备份 #!/bin/bash sourcepa ...

  6. 大型网站技术学习-3. 容器Docker与kubernetes

    大型网站技术基石篇-容器Docker与kubernetes   Docker和Kubernetes的关系就如Xen与OpenStack. Docker是一种容器技术,和Hypervisor(KVM/X ...

  7. php中array_walk() 和 array_map()两个函数区别

    两个函数的共性和区别: 1.传入这两个函数的 $value,就是数组中的单一个元素. 2.array_walk() 仅返回true或者false,array_map() 返回处理后的数组: 3.要得到 ...

  8. RUP 4+1视图

    RUP开篇之作:http://www.ibm.com/developerworks/cn/rational/r-4p1-view/index.html 百科:http://baike.baidu.co ...

  9. C#实现Javascript的Splice方法

    最近开始学习Javascript语言,看到splice方法,以下引用其说明:该方法是一个通用删除和插入元素的方法,它可以在数组指定的位置开始删除或插入元素.其包括3个参数:第一个参数指定插入的起始位置 ...

  10. [android] 实现返回键操作思路

    记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList 捕获用户的返回键操作,响应返回键,返回上一个界面 MainActivity.java /** * ...