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

  1. dependencies {
  2. compile "com.squareup.retrofit2:retrofit:2.1.0"
  3. compile "com.squareup.retrofit2:converter-gson:2.1.0"
  4. }

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

  1. public interface HttpService {
  2.  
  3. String SERVER_HOST = "http://xx.xx.xx.xx";
  4. String CONTENT_PATH = "/xx";
  5.  
  6. class factory {
  7.  
  8. private static volatile HttpService instance;
  9.  
  10. public static HttpService getHttpService() {
  11. if (instance == null) {
  12. synchronized (HttpService.class) {
  13. if (instance == null) {
  14. Retrofit rf = new Retrofit.Builder().baseUrl(HttpService.SERVER_HOST).build();
  15. HttpService hs = rf.create(HttpService.class);
  16. instance = hs;
  17. }
  18. }
  19. }
  20. return instance;
  21. }
  22. }
  23.  
  24. @GET(CONTENT_PATH + "/api/app/list?type=sense")
  25. Call<ResponseBody> list(@Header("DAAUTH") String token);
  26.  
  27. @GET(CONTENT_PATH + "/api/app/navlist?type=sense")
  28. Call<ResponseBody> favlist(@Header("DAAUTH") String token);
  29.  
  30. @GET(CONTENT_PATH + "/api/app/fav?type=sense")
  31. Call<ResponseBody> fav(@Header("DAAUTH") String token, @Query("appid") String appid);
  32.  
  33. @GET(CONTENT_PATH + "/api/app/unfav?type=sense")
  34. Call<ResponseBody> unfav(@Header("DAAUTH") String token, @Query("appid") String appid);
  35.  
  36. @GET(CONTENT_PATH + "/api/auth/login/")
  37. Call<ResponseBody> loginByBasic(@Header("DAAUTH") String basic);
  38.  
  39. @GET(CONTENT_PATH + "/api/auth/login/")
  40. Call<ResponseBody> loginByToken(@Header("DAAUTH") String token);
  41.  
  42. }

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

3.具体调用

  1. HttpService hs = HttpService.factory.getHttpService();
  2. String token = "token 5cd61e10d242937a13ec40f671db19d5";
    Call<ResponseBody> call = hs.list(token);
  3. call.enqueue(new Callback<ResponseBody>() {
  4. @Override
  5. public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
  6. try {
  7. ResponseBody body = response.body();
  8. if (body != null) {
  9. Log.d(TAG, body.string());
  10. }
  11. } catch (IOException e) {
  12. Log.e(TAG, e.getMessage());
  13. }
  14. }
  15.  
  16. @Override
  17. public void onFailure(Call<ResponseBody> call, Throwable t) {
  18. if(t.getClass().equals(SocketTimeoutException.class)) {
  19. Toast.makeText(MainActivity.this, "Connect Timeout...", Toast.LENGTH_SHORT).show();
  20. String msg = t.getMessage();
  21. Log.e(TAG, msg);
  22. }
  23. }
  24. });

简单的使用方法,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. 用代码如何检测一个android程序是否在运行

    /** * 检测一个android程序是否在运行 * @param context * @param PackageName * @return */ public static boolean is ...

  2. ionic3打包打包安卓apk详细过程以及遇到的问题

    1.jdk和sdk的安装以及环境变量配置参考打包详解 上述连接已经从下载安装jdk以及sdk的环境变量配置到打包的流程以及很详细了.但是在我自己安装打包的过程中遇到了这篇文章中没有遇到的问题,下面图文 ...

  3. django notes 二:URL dispatcher

    一般在 settings.py 中会有一个  ROOT_URLCONF ,请求到来时 django 会从 ROOT_URLCONF 指向的文件中查找  urlpatterns 变量配置的路由. url ...

  4. <? extends A> 和 <? super A> 的意思

    /** * @author Lee Boynton * @author Arthur van Hoff * @author Martin Buchholz * @author Ulf Zibis * ...

  5. WPF事件中的sender就是事件源

    可以看到wpf中所有的事件都是这个格式: private void btnTest_Click(object sender, RoutedEventArgs e)  { Button btn = (B ...

  6. The Add-in 'VMDebugger' failed to load or caused an exception.....的解决办法

    异常如图: 解决办法: (把VS的设置导出来,做出相应修改后,再导入,问题就可以解决了) 1. 在Visual Studio中选择 Tools --> Import and Export Set ...

  7. ORM框架SQLAlchemy的使用

    ORM和SQLAlchemy简介 对象关系映射(Object Relational Mapping,简称ORM),简单的来说,ORM是将数据库中的表与面向对象语言中的类建立了一种对应的关系.然后我们操 ...

  8. Redis 小结

    一.redis简介 redis是一款基于C语言编写的,开源的非关系型数据库,由于其卓越的数据处理机制(按照规则,将常用的部分数据放置缓存,其余数据序列化到硬盘),大家也通常将其当做缓存服务器来使用. ...

  9. [转]NLog 自定义字段 写入 oracle

    本文转自:http://www.cnblogs.com/skyapplezhao/p/5690695.html 1.通过Nuget安装NLog 下载,简单入门 请参照 我刚才转的几篇文章,下面我直接贴 ...

  10. deblurGAN

    -- main.py -- util.py -- data_loader.py -- mode.py -- DeblurGAN.py -- vgg19.py -- layer.py -- vgg19. ...