Retrofit学习与使用(一)-GET请求

2019-03-02  本文已影响0人  TRT131

-简单使用

建立接口

//Call<ResponseBody> 表示返回值,@Query("q")表示get请求参数
@GET("sug")
    Call<ResponseBody> listProduct(@Query("code") String code , @Query("q") String q);

建立请求

Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("http://suggest.taobao.com/") //表示请求的URL
                .addConverterFactory(ScalarsConverterFactory.create()) //转化器,转化ResponseBody为我们想要的类型
                .addConverterFactory(GsonConverterFactory.create())//同上
                .build();
        GetRequest_Interface request=retrofit.create(GetRequest_Interface.class);//用于获取代理对象
        Call<ResponseBody> repos=request.listProduct("utf-8","卫衣");//发起请求
        repos.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    Log.i("ResponseBody", "onResponse: " + response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

            }
        });

返回的值

onResponse:  {"result":[["卫衣女","14224035"],["卫衣男","7802480"],["卫衣女宽松","9460542"],["卫衣女宽松韩版","9161180"],["卫衣女2019新款潮","1749160"],["卫衣女潮ins","380324"],["卫衣男潮","11334008"],["卫衣男连帽","11125611"],["卫衣女连帽","12248768"],["卫衣女春秋","12367502"]]}

-将返回体解析成JSON字符串

//Call<String> 表示返回值,当前需要解析出JSON字符串,@QueryMap 里存放了请求的参数
@GET("sug")
    Call<String> listProduct(@QueryMap HashMap<String,String> maps);

Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("http://suggest.taobao.com/")
                .addConverterFactory(ScalarsConverterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        GetRequest_Interface request=retrofit.create(GetRequest_Interface.class);
        Map<String,String> maps=new HashMap<>();
        maps.put("code","utf-8");
        maps.put("q","卫衣");
        Call<String> repos=request.listProduct((HashMap<String, String>) maps);//与接口对应,用map提交get请求参数
        repos.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                    Log.i("ResponseBody", "onResponse: " + response.body());//返回体就是JSON字符串
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {

            }
        });

-将返回体解析成JAVA对象

public class ProductResult {
    public List<List<String>> getResult() {
        return result;
    }

    public void setResult(List<List<String>> result) {
        this.result = result;
    }

    private List<List<String>> result;

}
//Call<ProductResult> 表示返回值,当前需要解析出JAVA对象,@QueryMap 里存放了请求的参数
@GET("sug")
    Call<ProductResult> listProduct(@QueryMap HashMap<String,String> maps);


Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("http://suggest.taobao.com/")
                .addConverterFactory(ScalarsConverterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        GetRequest_Interface request=retrofit.create(GetRequest_Interface.class);
        Map<String,String> maps=new HashMap<>();
        maps.put("code","utf-8");
        maps.put("q","卫衣");
        Call<ProductResult> repos=request.listProduct((HashMap<String, String>) maps);
        repos.enqueue(new Callback<ProductResult>() {
            @Override
            public void onResponse(Call<ProductResult> call, Response<ProductResult> response) {
                    Log.i("ResponseBody", "onResponse: " + response.body());
            }

            @Override
            public void onFailure(Call<ProductResult> call, Throwable t) {

            }
        });

返回值如下

onResponse: com.example.trt.rxjavademo.ProductResult@a69b38b
上一篇下一篇

猜你喜欢

热点阅读