Retrofit使用简介

Retrofit使用简介

相信做过移动端开发的同学一定会知道Retrofit这个强大的开源Http框架,其底层基于OKHTTP框架,并提供了适配器CallAdapter以及数据转换器Converter等功能,下面将通过一个简单的例子来讲解一下其使用方法:

首先需要导入相关的依赖:

implementation('com.squareup.retrofit2:retrofit:2.4.0')
implementation('com.squareup.retrofit2:converter-gson:2.4.0')

新建一个配置接口:

public interface APIConfiguration {
    String API_BASE_URL = "https://route.showapi.com/"; //http://127.0.0.1:8080/usr/basic/
}

以及一个用于发送请求的接口:

public interface RepositoryInterface {
    @FormUrlEncoded
    @POST("131-46")
    @Headers("Content-Type: application/x-www-form-urlencoded")
    Call<StockDTO> getRealTimeStockData(@FieldMap Map<String, String> param);
}

随后再定义一个用于查询股票情况的Service类:

@Service
public class StockService implements APIConfiguration {
    private RepositoryInterface service;

    public StockService() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(API_BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        service = retrofit.create(RepositoryInterface.class);

    }

    /**
     * 获取所有的股票数据
     *
     * @param appId
     * @param sign
     * @param stocks
     * @param needIndex
     */
    public StockDTO getStockInfo(String appId, String sign, String stocks, String needIndex) {
        Map<String, String> paramMap = new ConcurrentHashMap();
        paramMap.put("showapi_appid", appId);
        paramMap.put("showapi_sign", sign);
        paramMap.put("stocks", stocks);
        paramMap.put("needIndex", needIndex);
        Call<StockDTO> repositoryCall = service.getRealTimeStockData(paramMap);
        Response<StockDTO> response = null;
        try {
            response = repositoryCall.execute();
        } catch (IOException e) {
            System.out.println(e);
        }
        return response.body();
    }
}

在Controller层调用:

@RestController
@RequestMapping("/stock")
public class StockController {
    @Autowired
    StockService stockService;

    @GetMapping
    public Object getAllStack(@RequestParam("id") String appId,
                              @RequestParam("sign") String sign,
                              @RequestParam("stocks") String stocks,
                              @RequestParam("needIndex") String needIndex) {
        return stockService.getStockInfo(appId,sign,stocks,needIndex);
    }
}

最后得到相应的股票数据:

注:

本文开发环境基于SpringBoot 2.3.2,Jdk版本为11,Gradle版本号为6.3,仅供学习参考使用,项目代码路径如下:

参考例程

参考文章

Retrofit2 源码解析之动态代理

官网

 

安利一门超级好课!
扫码下单输优惠码【csdnfxzs】再减5元,比官网还便宜!

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页