Retrofit网络框架

JDK 7以上 Android 2.3以上

自动实现json到javabean的装换,是对OKHttp的增强版,底层包装了Gson框架,但是必须new 一个Gson对象

主要掌握注解 @GET("home")  @Query("index")  @FormUrlEncoded  @Field("username")等

自己的思路步骤:

1,创建retrofit对象,并设置retrofit的参数 和转换的Gson

2,提取工程所需要的网络请求方法 get( )  login( ) 等,到接口Api中,retrofit对接口进行处理

3,retrofit 处理接口中(包括接口中的方法),得到请求对象

4,编写回调对象逻辑,callback

具体实现Demo :

    compile ‘com.squareup.retrofit2:retrofit:2.1.0‘
    compile ‘com.squareup.retrofit2:converter-gson:2.1.0‘  //json到javaBean的转换

配置权限

<uses-permission android:name="android.permission.INTERNET" />

MyApi 接口

public interface GoogleMarketApi {
    //http://127.0.0.1:8090/home?index=0
    //注解@GET:指定求方式 与请求路径
    //@Query是用来设置GET 请求参数变量名
    //返回值泛型是用来指定new Gson().fromJson(json,clz)
    //指定Call 该方法就可以运行子线程,代表异步请求
    @GET("home")
    Call<HomeData> getHomeData(
                  @Query("index")
                  String index);

    //@QueryMap指定map集合为get请求参数
    @GET("home")
    Call<HomeData> getHomeData(
            @QueryMap
            HashMap<String,String> map);
    //http://192.168.79.28:8080/webapi/post?username=itheima&password=123
    //@POST标注当前方法 使用POST请求
    //@Field用来标注post请求参数名
    //@FormUrlEncoded与@Post配合使用,要求对post的参数进行网络编码
    @FormUrlEncoded
    @POST("post")
    Call<LoginData> login(@Field("username")String username,@Field("password") String pwd);
    //    @FieldMap用来标注map为Post请求的参数
    @FormUrlEncoded
    @POST("post")
    Call<LoginData> login(@FieldMap HashMap<String,String> params);
}

MainActivity.java 中的方法

 public void request(View view) {
        //步骤二。开始使用retrofit发送请求
        //2.1.初始化框架  AlertDialog.Builder setTitle与  Retrofit.Builder比较 前者 快速创建对话  后者 快速初始化retrofit框架
        String baseUrl="http://192.168.79.28:8080/webapi/";//retrofit要求以/结束,否则会产生错误
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)//设置项目路径 其它路径都改成相对路径 与ApiUrls   HOST    HOME=HOST+"/home"/
                .addConverterFactory(GsonConverterFactory.create(new Gson()))//convert就是将json解析成javaBean
                .build();//执行创建方法
        //2.2.调用retrofit框架去读到一个请求需要的全部参数,参数都是注解或者泛型来标注
        GoogleMarketApi googleMarketApi = retrofit.create(GoogleMarketApi.class);//读取请求方式 请求页面 返回参数
        //2.3.可以获取一个异步方法
       // Call<LoginData> method = googleMarketApi.login("itheima", "123");
        HashMap<String, String> params=new HashMap<>();
        params.put("username","itheima");
        params.put("password","123");
        Call<LoginData> method = googleMarketApi.login(params);
        //2.4.执行子线程,处理服务端返回数据 都是将数据传给回调对象(空方法,给开发者编写业务逻辑,注意条件)
        Callback<LoginData> callback=new Callback<LoginData>() {
            //2.4.1.处理请求成功的业务逻辑
            @Override
            public void onResponse(Call<LoginData> call, Response<LoginData> response) {
                //2.4.2.从响应里面获取解析后的javaBean
                LoginData data = response.body();
                if (data != null) {
                    textView.setText(data.data);
                }
            }
            //2.4.3.处理请求失败的业务逻辑
            @Override
            public void onFailure(Call<LoginData> call, Throwable t) {
                t.printStackTrace();
                textView.setText(t.getMessage());
            }
        };
        method.enqueue(callback);
}
时间: 2024-11-25 13:13:00

Retrofit网络框架的相关文章

Retrofit网络框架入门使用

1.简介 retrofit其实就是对okhttp做了进一步一层封装优化.我们只需要通过简单的配置就能使用retrofit来进行网络请求了. Retrofit能够直接返回Bean对象,例如如果我们进行一个网络接口的请求,返回来一串json字符串.那么这个时候一般我们都要拿到这个json字符串后进行解析得到对应的Bean对象,Retrofit只要依赖一下Gson的转换库然后进行简单的配置就能够直接拿到Bean对象了,不需要我们自己去解析. 接触过OKHttp的人会发现,Retrofit和OKHttp

迅速上手Retrofit+RxJava+Okhttp+FastJson的网络框架[RRO]

Retrofit以其灵活的调用形式, 强大的扩展性著称. 随着RxAndroid的推出, Retrofit这样的可插拔式的网络框架因其可以灵活兼容各种数据解析器, 回调形式(主要还是RxJava啦)而更加风靡. 但是! Retrofit2官方虽有一堆集成第三方json解析的实现,比如gson-converter等等..但唯独就是没有FastJson, 这让我很不解..于是自己动手模仿gson-converter写了一个fastjson-converter, 并封装为一个更易用的适合Android

android快捷开发之Retrofit网络加载框架的简单使用

大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据进行解析解决,而我们自己学的东西大多数情况下都没有针对网络很糟糕的情况进行优化.下面就给大家带来Square Inc这家有创新精神的公司留下的Retrofit网络加载库的使用! Retrofit封装了从Web API下载数据,解析成一个普通的java对象(POJO),这里我们就去天狗网使用他们的一个

Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrofit 是安卓上最流行的HTTP Client库之一 使用REST API设计风格 支持 NIO(new i/o) 默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强. 随着Google对HttpClient的摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retrofi

Android网络框架OkHttp之get请求(源码初识)

概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天又发布了.以下以OkHttp3.2版本为准,没办法,上个星期看的时候还是以3.2为最新版本的.首先,我们要先了解一些背景,OkHttp这个框架是有Square公司推出的,进入官网.如果想看API,点击进入API.大概了解了OkHttp之后,我们应该知道OkHttp是一个网络框架,想想以前在开发中,网

Java EE 架构设计——基于okhttp3 的网络框架设计

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/77893903 本篇文章带大家设计一套满意业务需求.代码健壮高效(高内聚低耦合)并且可拓展的网络框架.以最新的okhttp3为基础设计出高效可靠的网络缓存.多线程文件下载等架构模块.从此不局限于使用别人的框架,而步入了设计框架,让自己可以走的更远,我觉得这才是一名合格开发者所应该具备的能力.在开发中,选择一个开源框架的标准有很多,例如学习成本.文档是否齐全.github星数量.现在

Android网络框架源码分析一---Volley

转载自 http://www.jianshu.com/p/9e17727f31a1?utm_campaign=maleskine&utm_content=note&utm_medium=mobile_author_hots&utm_source=recommendation 公司最近新起了一个项目,对喜欢尝鲜的我们来说,好处就是我们可以在真实的项目中想尝试一些新技术,验证想法.新项目对网络框架的选取,我们存在三种方案: 1.和我们之前的项目一样,使用Loader + HttpCli

ym—— Android网络框架Volley(体验篇)

<a target=_blank href="https://android.googlesource.com/platform/frameworks/volley" style="font-family: Arial, Helvetica, sans-serif; box-sizing: border-box; background-image: initial; background-attachment: initial; background-color: rg

Android网络框架Volley

Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp 他们各有优劣,之前个人则比较喜欢用Android-async-http, 如今Google推出了官方的针对Android平台上的网络通信库,能使网络通信更快,更简单,更健壮,Volley在提供了高性能网络通讯功能的同时,对网络图片加载也提供了良好的支持,完全可以满足简单REST客户端的需求, 我们