作者:==Jake Wharton==:官方解释https://news.realm.io/cn/news/droidcon-jake-wharton-simple-http-retrofit-2/
添加依赖
有六种解析数的格式,我使用的是Gson
Gson: com.squareup.retrofit2:converter-gson
Jackson: com.squareup.retrofit2:converter-jackson
Moshi: com.squareup.retrofit2:converter-moshi
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire
Simple XML: com.squareup.retrofit2:converter-simplexml
Scalars (primitives, boxed, and String):
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
使用
测试API接口:
http://ip.taobao.com/service/getIpInfo.php?ip=8.8.8.8
获取的数据:
{
"code": 0,
"data": {
"country": "美国",
"country_id": "US",
"area": "",
"area_id": "",
"region": "",
"region_id": "",
"city": "",
"city_id": "",
"county": "",
"county_id": "",
"isp": "",
"isp_id": "",
"ip": "8.8.8.8"
}
}
- ~~ Bean对象~~
public class TaobaoDataBean {
public int code;
public DataBean data;
public class DataBean {
public String country;
public String country_id;
public String area;
public String area_id;
public String region;
public String region_id;
public String city;
public String city_id;
public String isp;
public String isp_id;
public String ip;
public String getCountry() {
return country;
}
public String getCountry_id() {
return country_id;
}
public String getArea() {
return area;
}
public String getArea_id() {
return area_id;
}
public String getRegion() {
return region;
}
public String getRegion_id() {
return region_id;
}
public String getCity() {
return city;
}
public String getCity_id() {
return city_id;
}
public String getIsp() {
return isp;
}
public String getIsp_id() {
return isp_id;
}
public String getIp() {
return ip;
}
@Override
public String toString() {
return "DataBean{" +
"country='" + country + '\'' +
", country_id='" + country_id + '\'' +
", area='" + area + '\'' +
", area_id='" + area_id + '\'' +
", region='" + region + '\'' +
", region_id='" + region_id + '\'' +
", city='" + city + '\'' +
", city_id='" + city_id + '\'' +
", isp='" + isp + '\'' +
", isp_id='" + isp_id + '\'' +
", ip='" + ip + '\'' +
'}';
}
}
public int getCode() {
return code;
}
public DataBean getData() {
return data;
}
}
- API接口
public interface TaobaoService {
@GET("getIpInfo.php")
Call<TaobaoDataBean> getIpInfo(@Query("ip") String ip);
}
- 初始化Retrofit,创建接口实例,进行异步请求
public class MainActivity extends AppCompatActivity {
public static final String baseUrl="http://ip.taobao.com/service/";
private TaobaoService mTaobaoService;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView= (TextView) findViewById(R.id.id_text);
Retrofit retrofit=new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
mTaobaoService = retrofit.create(TaobaoService.class);
Call<TaobaoDataBean> taobaoDataBeanCall=mTaobaoService.getIpInfo("8.8.8.8");
taobaoDataBeanCall.enqueue(new Callback<TaobaoDataBean>() {
@Override
public void onResponse(Call<TaobaoDataBean> call, Response<TaobaoDataBean> response) {
if (response.isSuccessful()){
TaobaoDataBean taobaoDataBean=response.body();
mTextView.setText(taobaoDataBean.getData().toString());
Toast.makeText(MainActivity.this,taobaoDataBean.toString(),Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this,"查询失败",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<TaobaoDataBean> call, Throwable t) {
Toast.makeText(MainActivity.this,"查询失败",Toast.LENGTH_SHORT).show();
}
});
}
}