java开发实例——调用第三方接口

该代码段展示了如何通过Java调用海尔商城的第三方接口来获取销售区域和店铺四级地址。`HaierStoreClient`类中定义了两个方法,分别用于根据店铺编码获取销售区域列表和根据经纬度获取店铺的四级地址。调用过程中使用了`RequestUtil`工具类,该工具类利用`RestTemplate`发送HTTP请求,并处理响应。请求头包含了认证信息,确保接口调用的合法性。
摘要由CSDN通过智能技术生成
//调用第三方接口
@Slf4j
@Component
public class HaierStoreClient {


    @Value("${haier.store.url}")
    private String haierStoreUrl;

    @Value("${haier.mstore.url}")
    private String haierMStoreUrl;

    private String GET_SALES_AREA_BY_CODE = "/api/thirdpay/store/getSalesAreaByCode";

    private String  GET_STORE_FIVE_ADDR= "/mstore/region/location.json";


    @Resource
    private RequestUtil requestUtil;

    public List<SalesAreaDto> getSalesAreaByCode(String storeCode){

        log.info("【根据店铺编码远程调用商城接口查询销售区域】参数:storeCode={}",storeCode);
        String resultStr = requestUtil.sendGetRequest(haierStoreUrl, GET_SALES_AREA_BY_CODE+"?storeCode="+storeCode,null);
        Map resultMap = JSONObject.parseObject(resultStr, Map.class);
        List<SalesAreaDto> salesAreaDtoList = JSONObject.parseArray(String.valueOf(resultMap.get("data")), SalesAreaDto.class);

        log.info("【根据店铺编码远程调用商城接口查询销售区域】返回结果:salesAreaDtoList={}",salesAreaDtoList);
        if(CollectionUtils.isEmpty(salesAreaDtoList)){
            return new ArrayList<>();
        }
        for (SalesAreaDto salesAreaDto : salesAreaDtoList) {
            salesAreaDto.setStoreCode(storeCode);
        }
        return salesAreaDtoList;
    }

    public StoreFiveAddrDto getStoreFiveAddr(BigDecimal latitude, BigDecimal longitude){

        log.info("【根据店铺经纬度远程调用商城接口查询店铺四级地址】参数:latitude={},longitude={}",latitude,longitude);
        String resultStr = requestUtil.sendGetRequest(haierMStoreUrl, GET_STORE_FIVE_ADDR+"?latitude="+latitude+"&longitude="+longitude,null);
        Map resultMap = JSONObject.parseObject(resultStr, Map.class);
        StoreFiveAddrDto storeFiveAddrDto = JSONObject.parseObject(String.valueOf(resultMap.get("data")), StoreFiveAddrDto.class);
        log.info("【根据店铺经纬度远程调用商城接口查询店铺四级地址】返回结果:storeFiveAddrDto={}",storeFiveAddrDto);
        return storeFiveAddrDto;
    }
}
//调用第三方接口工具类
@Slf4j
@Component
public class RequestUtil {

    @Resource
    private RestTemplate restTemplateClient;

    @Resource
    private MallRequest mallRequest;

    /**
     * post请求(商城请求)
     */
    public String sendPostRequest(String path,String URI, Object params) {

        log.info("发送POST请求 URL={}",path+URI);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.add("Authorization",mallRequest.getMallToken());
        HttpEntity<Object> request = new HttpEntity<>(JSON.toJSONString(params), headers);
        ResponseEntity<String> response = restTemplateClient.postForEntity(path+URI, request, String.class);
        return response.getStatusCode().is2xxSuccessful() ? response.getBody() : null;
    }


    /**
     * get 有参数
     */
    public String sendGetRequest(String path,String URI,Object params) {

        String mallToken = mallRequest.getMallToken();
        log.info("发送GET请求 URL={},token={}",path+URI,mallToken);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.add("Authorization",mallToken);
        HttpEntity<Object> requestEntity = new HttpEntity<>(JSON.toJSONString(params), headers);
        ResponseEntity<String> response = restTemplateClient.exchange(path+URI, HttpMethod.GET, requestEntity, String.class);
        System.out.println(response);
        return response.getStatusCode().is2xxSuccessful() ? response.getBody() : null;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值