Android之Retrofit網路獲取框架
阿新 • • 發佈:2018-11-14
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(); } }); } }
效果如下: