retrofit2框架基本使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35189116/article/details/72675341

 首先我们知道retrofit本身是不能进行网络请求的,他是要内部依赖其他网络请求库,在retrofit1中它是OKhttp 但是现在的retrofit2中可以支持其他的比如说volley:

所有第三方库都要引包这里你这样做:

 /*retrofit2*/
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    /*retrofit2低层依赖网络请求库这里选择okhttp*/
    compile 'com.squareup.okhttp3:okhttp:3.4.1'

   / /这里使用了黄油刀,相信大家不陌生
    compile 'com.jakewharton:butterknife:7.0.1' 


好了基本代码都在这了 注释很详细我就不废话了:

public class MainActivity extends AppCompatActivity {

    @Bind(R.id.tv)
    TextView tv;
    @Bind(R.id.btn1)
    Button btn1;
    private Retrofit retrofit;
    private SeeHouseService service;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        //1.创建retrofit对象
        retrofit = new Retrofit.Builder()
                //内部依赖网络请求库
                .client(new OkHttpClient())
                //接口主页(加上/)
                .baseUrl("http://ikft.house.qq.com/")
                .build();
        //3.通过retrofit对象创建一个实现了该接口的类对象
        service = retrofit.create(SeeHouseService.class);

    }

    @OnClick(R.id.btn1)
    public void onViewClicked() {
        //4.通过该对象去实现接口方法得到call
        //Call<ResponseBody> cityListByUrl = service.getCityListByUrl();
        Call<ResponseBody> webViewByUrl = service.getWebViewByUrl(1);


        //5.通过call来获得数据
        webViewByUrl.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call,final Response<ResponseBody> response) {
                if(response.isSuccessful()){
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                String s = response.body().string();
                                Log.d("ok", Thread.currentThread().getName());
                                //onResponse方法是在当前线程执行,而okhttp则是在子线程
                                tv.setText(s);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    });
                }
            }


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


            }
        });
       /* cityListByUrl.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) {
                if (response.isSuccessful()) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                String s = response.body().string();
                                Log.d("ok", Thread.currentThread().getName());
                                //onResponse方法是在当前线程执行,而okhttp则是在子线程
                                tv.setText(s);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    });


                }
            }


            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.d("ok", "onFailure() called with: call = [" + call + "], t = [" + t + "]");
            }
        });*/


    }


    //2.定义一接口
    public interface SeeHouseService {
        //这里不加/  最终URL就是base+这里
        @GET("index.php?guid=866500021200250&devua=appkft_1080_1920_XiaomiMI4LTE_1.8.3_Android19&act=kftcitylistnew&channel=71&devid=866500021200250&appname=QQHouse&mod=appkft")
        Call<ResponseBody> getCityListByUrl();


        @GET("index.php?guid=866500021200250&devua=appkft_1080_1920_XiaomiMI4LTE_1.8.3_Android19&devid=866500021200250&appname=QQHouse&mod=appkft&act=homepage&channel=71")
        Call<ResponseBody>getWebViewByUrl(@Query("cityid")Integer cityid);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_35189116/article/details/72675341