有大半年没有搞的Android了,这几天重拾Android的,发现这个retrofit2网络框架很强大,灵活,自己看官方文档捣鼓里面的内容官方文档,里面的内容通俗易懂,开始的第一步,引入所需jar
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
当使用聚合的接口测试时,
http://v.juhe.cn/weixin/query?key=b90904286fe3f9c20f6929f2023a62a3
在类中接口是这样定义的
@GET("query/key={key}") Call<ResponseBody> getBlog(@Path("key") String key);
这样写会报一个错误
URL query string "key={key}" must not have replace block. For dynamic query parameters use @Query.
这个是因为我们的接口后面跟着的是查询参数,path是跟路径不参与参数的携带故,下面这种写法:
@GET("query") Call<ResponseBody> getBlog(@Query("key") String key);
Retrofit Retrofit = new Retrofit.Builder().baseUrl("http://v.juhe.cn/weixin/").build();
BlogService BlogService = Retrofit.create(BlogService.class);
Call<ResponseBody> call = BlogService.getBlog("b90904286fe3f9c20f6929f2023a62a3");
// 用法和OkHttp的call如出一辙,
// 不同的是如果是Android系统回调方法执行在主线程
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
textid.setText(response.body().string());
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});