Retrofit学习

作者:==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"
    }
}
  1. ~~ 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;
    }
}
  1. API接口
public interface TaobaoService {
    @GET("getIpInfo.php")
    Call<TaobaoDataBean> getIpInfo(@Query("ip") String ip);
}
  1. 初始化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();
            }
        });
    }
}

参考文章:http://www.demoso.net/view/1340

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值