1. 程式人生 > >Android之Retrofit網路獲取框架

Android之Retrofit網路獲取框架

Retrofit網路獲取能優點很多,最實用的就是不用進行麻煩的Json具體解析,簡單,優化,高效率

一、建立介面:

public interface MenuService {
    //http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1
    //通過Get註解,獲取網路Jasn資料:
    @GET("dish_list.php?stage_id=1&limit=20&page=1")
    Call<JavaBean> getResualt();
}

二、建立javaBean類:

三、許可權:

 Retrofit:

implementation 'com.squareup.retrofit2:retrofit:2.2.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.2.0'

 butterknife:

implementation 'com.jakewharton:butterknife:8.8.1'
implementation 'com.facebook.fresco:fresco:1.5.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

四.例項網路框架Retrofit:要與butternife聯用:

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.rv)
    RecyclerView rv;
    @BindView(R.id.but)
    Button but;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        /**
         * 例項網路框架Retrofit:
         * 1.將下載的Json轉為Java物件
         * 2.基層http網址
         * 3.構建build
         */
        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("http://www.qubaobei.com/ios/cf/")
                .build();

        //例項介面MenuService:
        MenuService menuService = retrofit.create(MenuService.class);

        //獲取到介面,再獲取到其getResult方法:
        Call<JavaBean> resualt = menuService.getResualt();

        //拿到方法,通過非同步操作,
        resualt.enqueue(new Callback<JavaBean>() {
            @Override
            public void onResponse(Call<JavaBean> call, Response<JavaBean> response) {
                Toast.makeText(MainActivity.this, "載入成功!", Toast.LENGTH_SHORT).show();
                JavaBean body = response.body();
                List<JavaBean.DataBean> data = body.getData();
                Log.i("sadsad",data.toString());

                //recycleView展示模式:
                LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
                rv.setLayoutManager(linearLayoutManager);

                //recycleView介面卡:
                MyRecycleAdapter myRecycleAdapter = new MyRecycleAdapter(MainActivity.this, data);
                rv.setAdapter(myRecycleAdapter);
            }

            @Override
            public void onFailure(Call<JavaBean> call, Throwable t) {
                Toast.makeText(MainActivity.this, "載入失敗!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

效果如下: