Retrofit_简易Demo

retrofit github地址 : https://github.com/square/retrofit

文章介绍(转载地址):http://blog.csdn.net/bitian123/article/details/51899716


接口

package interfaces;

import model.RobotResponse;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

/**
 * Created by yj on 2016/10/25.
 * 机器人问答
 */
public interface RobotServes {
    // 使用这个接口返回的值是String
    @GET("robot/index")
    Call<String> getString(@Query("info") String info, @Query("key") String key);


    // 使用这个接口返回的值已经封装成实体类了
    @GET("robot/index")
    Call<RobotResponse> get(@Query("info") String info, @Query("key") String key);

}

使用

package com.example.administrator.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import interfaces.RobotServes;
import model.RobotResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.converter.scalars.ScalarsConverterFactory;

public class MainActivity extends AppCompatActivity {
    private final String TAG = "MainActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 网络请求
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://op.juhe.cn/")
                // 增加返回值为String的支持
                .addConverterFactory(ScalarsConverterFactory.create())
                // 增加返回值为Gson的支持
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        /*-----------------------------------------------------------------------------*/

        // 接口实体,返回的是String
        RobotServes phoneServes = retrofit.create(RobotServes.class);
        Call<String> call = phoneServes.getString("你好", "2833a660902644508778b5dfd452c080");
        // 发送请求
        call.enqueue(new Callback<String>() {
            // 响应回调
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                Log.d(TAG, "onResponse = \n"
                        + "response.message() = " + response.message() + "\n"
                        + "response.body() = " + response.body());

                /*分割*/
                Log.d(TAG, "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
            }

            // (包括不限于) 网络连接不上时回调
            @Override
            public void onFailure(Call<String> call, Throwable t) {
                Log.d(TAG, "onFailure = \n" + t.toString());
            }

        });

/*----------------------第二种方式------------------------*/

        // 返回的是实体类
        RobotServes serves = retrofit.create(RobotServes.class);
        Call<RobotResponse> ca = serves.get("你好", "2833a660902644508778b5dfd452c080");
        ca.enqueue(new Callback<RobotResponse>() {
            @Override
            public void onResponse(Call<RobotResponse> call, Response<RobotResponse> response) {
                Log.d(TAG, response.body().getResult().getText());
            }

            @Override
            public void onFailure(Call<RobotResponse> call, Throwable t) {

            }
        });

    }

}

实体

package model;

/**
 * Created by yj on 2016/10/25.
 */
public class RobotResponse {
    private String reason;
    private String error_code;
    private ResultResponse result;

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public String getError_code() {
        return error_code;
    }

    public void setError_code(String error_code) {
        this.error_code = error_code;
    }

    public ResultResponse getResult() {
        return result;
    }

    public void setResult(ResultResponse result) {
        this.result = result;
    }
}
package model;

/**
 * Created by yj on 2016/10/25.
 */
public class ResultResponse {
    private String code;
    private String text;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

结果

10-25 13:00:57.998 8037-8037/com.example.administrator.myapplication D/MainActivity: onResponse = 
10-25 13:00:57.998 8037-8037/com.example.administrator.myapplication D/MainActivity: response.message() = OK
10-25 13:00:57.998 8037-8037/com.example.administrator.myapplication D/MainActivity: response.body() = {"reason":"成功的返回","result":{"code":100000,"text":"嘿嘿,你好我好,大家都好~"},"error_code":0}
10-25 13:00:57.998 8037-8037/com.example.administrator.myapplication D/MainActivity: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
10-25 13:00:57.998 8037-8037/com.example.administrator.myapplication D/MainActivity: 你好呀,希望你今天过的快乐

注意:这里的enqueue方法是将请求入队, 实际结果回调的顺序和入队顺序无关,取决于响应时间的长短

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值