zoukankan      html  css  js  c++  java
  • retrifit

    Retrofit

    特点

    1. 性能最好,处理最快
    2. 使用REST API时非常方便;
    3. 传输层默认就使用OkHttp;
    4. 支持NIO;
    5. 拥有出色的API文档和社区支持
    6. 速度上比volley更快;
    7. 如果你的应用程序中集成了OKHttp,Retrofit默认会使用OKHttp处理其他网络层请求。
    8. 默认使用Gson

    使用

    Retrofit支持同步和异步两种方式,在使用时,需要将请求地址转换为接口,通过注解来指定请求方法,请求参数,请求头,返回值等信息。还是使用之前的person的那段json值,get请求到服务器后从数据库查询数据,返回值为查询到的数据,post请求向服务器提交一条数据,返回值为提交的数据。 
    首先完成请求所用的service,是一个interface,完全通过注解完成配置

    import retrofit.Callback;
    import retrofit.http.Field;
    import retrofit.http.FormUrlEncoded;
    import retrofit.http.GET;
    import retrofit.http.Headers;
    import retrofit.http.POST;
    import retrofit.http.Path;
    import retrofit.http.Query;
    
    /**
     * Created by lizhangqu on 2015/5/11.
     */
    public interface PersonService {
        @Headers({
                "Cache-Control: max-age=640000",
                "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
        })
        //通过注解设置请求头
        @GET("/{test}/rest.php")
        //设置请求方法为get,相对路径为注解内内容,其中{test}会被@Path注解指定内容替换
        Person getPerson(@Path("test") String dir,@Query("name") String name);
        //@Query用于指定参数
    
        @FormUrlEncoded
        //urlencode
        @POST("/test/rest1.php")
        //post提交
        Person updatePerson(@Field("name") String name,@Field("age") int age);
        //@Field提交的域
    
    
        @POST("/test/rest1.php")
        void updatePerson(@Field("name") String name,@Field("age") int age, Callback<Person> callback);
        //异步回调,不能指定返回值
    }


    GET 
    使用时,通过RestAdapter的实例获得一个接口的实例,其本质是动态代理,注意含有返回值的方法是同步的,不能UI线程中调用,应该在子线程中完成

    RestAdapter restAdapter = new RestAdapter.Builder()
                            .setEndpoint("http://121.41.119.107")
                            .build();
                    PersonService personService=restAdapter.create(PersonService.class);
                    Person person=personService.getPerson("test","zhangsan");
                    Log.d("TAG",person.toString());
    • POST

    POST的调用同Get,获得adapter后获得一个代理对象,然后通过这个代理对象进行网络请求

    Person person1=personService.updatePerson("lizhangqu", 12);
    Log.d("TAG",person1.toString());
    • 异步请求

    如果要使用异步请求,需要将接口中的方法返回值修改会void,再加入回调参数Callback,就如PersonService中第三个方法一样,请求完成后会回调该callback对象的success或者fail方法。

    RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint("http://121.41.119.107")
                    .build();
            PersonService personService=restAdapter.create(PersonService.class);
            personService.updatePerson("lizhangqu",23, new Callback<Person>() {
                @Override
                public void success(Person person, Response response) {
                    Log.d("TAG", person.toString());
                }
    
                @Override
                public void failure(RetrofitError error) {
    
                }
            });
  • 相关阅读:
    Centos安装Nginx过程步骤详细解析
    查看是否已经安装nginx
    使用uwsgi --http :80 --wsgi-file test.py 在浏览器上无法访问
    uwsgi 常用参数
    Python生成requirements.txt方法
    快排
    绝对路径和相对路径
    perspective结合transform的3D效果
    mobile&nbsp;web&nbsp;手机开发
    Date对象需要注意的点
  • 原文地址:https://www.cnblogs.com/qianyukun/p/5433921.html
Copyright © 2011-2022 走看看