网络请求地址
https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=手机号
拆分接口
//网络请求的公共头(retrofit要用公共头必须"/"结尾)
https://tcc.taobao.com/cc/json/
//接口
mobile_tel_segment.htm
//参数
tel
接口类
public interface Api{
@GET("mobile_tel_segment.htm")
Call<ResponseBody> telphone(@Query("tel") String phone);
}
retrofit的 基本设置
retrofit = new Retrofit.Builder()
.baseUrl("https://tcc.taobao.com/cc/json/")
.build();
//怎么调用接口
1、拿到接口类文件对象
Api api = retrofit.create(Api.class);
2、调用抽象接口
Call<ResponseBody> call = api.telphone("手机号”);
3、处理返回结果
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
//请求成功
try {
//记住是先string() 再tostring() ,string()是body()的方法
String str = response.body().string().toString();
texxtView.setText(str);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
//请求失败
}
});
activity里的代码完整版
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://tcc.taobao.com/cc/json/")
.build();
//怎么调用接口
1、拿到接口类文件对象
Api api = retrofit.create(Api.class);
Call<ResponseBody> call = api.telphone("手机号”);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
//记住是string() 而不是tostring()
String str = response.body().string();
texxtView.setText(str);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
//请求失败
}
});
再说一个自己遇见的问题,
public interface Api{
@GET("mobile_tel_segment.htm?tel={“phone”}")
Call<ResponseBody> telphone(@Path("phone") String phone);
}
这里使用占位符在参数上,发现请求数据失败,感觉可能是@Path只能作用在urll路径上,而不能再参数上。