Retrofit 网络请求

1.准备:

Gradle配置文件

dependencies {
    ...
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    ...
}
 

2.给出一个用retrofit分别进行get和post网络请求的代码例子

2.1定义一个接口,在接口中声明一个方法来定义请求的相关内容。

public interface User {
        @GET(Urls.URL_USER_ACCOUNTINFO)
        void getAccountInfo(@QueryMap Map<String, String> a, Callback<JsonObject> callback);

        @Multipart
        @POST(Urls.URL_SAVE_PHOTO)
        void postPhoto(@Part("photo") TypedFile photo, Callback<JsonObject> callback);

    }
其中@GET.@POST表明该请求的方式,除此之外还有@DELETE@HEAD@PUT

奋斗其中@QueryMap为参数定义,Map<String,String>  a,为定义的参数格式,但下文中不会使用变量a,所以在命名方面whatever

奋斗Callback<JsonObject> callback为回调接口,JsonObject表明返回数据接口为JsonObject类型。
奋斗这段代码可以概括为,定义了一个user接口,该接口定义了一个getAccountInfo函数,这个函数会通过HTTP GET请求去访问服务器的Urls.URL_USER_ACCOUNT(这个变量以及之后的PRE均在Urls文件中定义好)路径并把调用Callback方法将结果返回为一个JsonObject类型的java对象。

奋斗函数可以定义为同步和异步,具有返回值的函数为同步执行的。

@GET("/user/{id}/photo")
Photo listUsers(@Path("id") int id);

    异步执行函数没有返回值并且要求函数最后一个参数为Callback对象,callback对象会在主线程中调用。

 

2.2创建一个RestAdapter对象

RestAdapter adapter=new RestAdapter.Builder()
                .setEndpoint(Urls.PRE)
                .build();
奋斗setEndPoint方法指定了请求地址的前半部分,即服务器的地址,如http://api.github.com

2.3得到了一个RestAdapter对象后,调用RestAdapter的create方法得到User接口的实现类

public static void method1(Map<String, String> map, final Context context) {

        Callback<JsonObject> callback=new Callback<JsonObject>() {
            @Override
            public void success(JsonObject s, Response response) {
                Toast.makeText(context,s.toString(),Toast.LENGTH_LONG ).show();
            }

            @Override
            public void failure(RetrofitError error) {
                Log.e("Tag","get failed again");
            }
        };

	Request.User user=adapter.create(Request.User.class);
        user.getAccountInfo(map,callback);

    }

同理post请求

3在主线程中调用的时候

public void onClickGet(View view) {

        Map<String,String> map= new HashMap<>();
        map.put("ID","a7852cfb-9648-4213-8c08-26c5fe8dd8b6");
        Request.method1(map,MainActivity.this);

    }


retrofit官网:http://square.github.io/retrofit/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值