spring+httpClient调用别人服务

17 篇文章 0 订阅
首先,在spring的配置需要调用的url,例如:
<bean id="adManager" class="com.jd.hotel.manager.index.impl.AdManagerImpl">
        <property name="adUrl" value="${hotel.ad.url}"/>
    </bean>

在Manger调用的时候set注入进来

 private List<GroupProduct> getData() throws Exception{
        Map<String, String> paraMap = new HashMap<String, String>();
        paraMap.put("action", "max_team_five_city_hotel_team_info");
        String result = httpClientUtilManager.executeHttpRequestByGetType(groupProductUrl, paraMap);
        List<GroupProduct> groupProducts = convertData(result);
        return groupProducts;
    }

executeHttpRequestByGetType方法:

 /**
     * get方式提交
     *
     * @param url
     * @param keyValueMap
     * @return
     */
    public String executeHttpRequestByGetType(String url, Map<String, String> keyValueMap) {
        HttpClient client = new HttpClient();
        StringBuffer sb = new StringBuffer(url);
        PostMethod postMethod = null;
        try {
            //设置请求参数
            if (keyValueMap != null) {
                Iterator it = keyValueMap.entrySet().iterator();
                if (keyValueMap.size() > 0) {
                    sb.append("?");
                    while (it.hasNext()) {
                        Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
                        sb.append(entry.getKey() + "=" + entry.getValue() + "&");
                    }
                    sb.deleteCharAt(sb.length()-1);
                }

            }
            postMethod = new PostMethod(sb.toString());
            log.debug("query uri ===============" + postMethod.getURI());
            postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
            postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "gbk");
            //todo:设置超时时间
            postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 200000);
            int statusCode = client.executeMethod(postMethod);
            if (statusCode != HttpStatus.SC_OK) {
                log.info("request '" + url + "' failed,the status is not 200,status:" + statusCode);
                return "";
            }
            String responseBody = postMethod.getResponseBodyAsString();
            return responseBody;
        } catch (Exception e) {
            log.error("发生异常!请检查网络和参数", e);
        } finally {
            if(postMethod!=null){
               postMethod.releaseConnection();
            }
        }
        return null;
    }
}

convertData方法:

 private List<GroupProduct> convertData(String result) throws Exception{
        List<GroupProduct> groupProducts = new ArrayList<GroupProduct>();
        if(result==null || "".equals(result)){
            return  groupProducts;
        }
        try {
            ArrayList<HashMap> hashMaps = (ArrayList<HashMap>) JSONUtil.deserialize(result);
            for (HashMap map : hashMaps) {
                GroupProduct groupProduct = new GroupProduct();
                groupProduct.setCityName(map.get("hotel_city").toString());
                groupProduct.setDesc(map.get("title").toString());
                groupProduct.setOldPrice(map.get("market_price").toString());
                groupProduct.setPrice(map.get("team_price").toString());
                groupProduct.setImgUrl(map.get("image").toString());
                groupProduct.setProductUrl("team-" + map.get("id").toString() + ".html");
                groupProduct.setDisCount(countDis(Double.parseDouble(map.get("team_price").toString()), Double.parseDouble(map.get("market_price").toString())));
                groupProducts.add(groupProduct);
            }
        } catch (Exception e) {
            log.error("GroupProductManagerImpl convertData error" + e);
        }
        return groupProducts;

    }


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值