restTemplate请求第三方接口

/**
 * 封装的get请求,暂时只支持map传参,并且value只支持基本类型和String
 *
 * @param url
 * @param object
 * @return
 */
public static String getForObject(String url, Object object) {
    StringBuffer stringBuffer = new StringBuffer(url);
    if (object instanceof Map) {
        Iterator iterator = ((Map) object).entrySet().iterator();
        if (iterator.hasNext()) {
            stringBuffer.append("?");
            Object element;
            while (iterator.hasNext()) {
                element = iterator.next();
                Map.Entry<String, Object> entry = (Map.Entry) element;
                //过滤value为null,value为null时进行拼接字符串会变成 "null"字符串
                if (entry.getValue() != null) {
                    stringBuffer.append(element).append("&");
                }
                url = stringBuffer.substring(0, stringBuffer.length() - 1);
            }
        }
    } else {
        throw new RuntimeException("url请求:" + url + "请求参数有误不是map类型");
    }
    log.info("url请求:" + url);
    return new RestTemplate().getForObject(url, String.class);
}

get请求示例:

HashMap<String, Object> stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("token", token);
stringObjectHashMap.put("url", url);

try {
    log.info("解析url的正文url{}", url);
    String forObject = RestTemplateUtil.getForObject(tokenUrl, stringObjectHashMap);
    log.info("通过url查询内容数据{}", forObject);

    JSONObject jsonObject = JSON.parseObject(forObject);
    Integer retcode = (Integer) jsonObject.get("retcode");

    if (retcode == 1) {
        //解析url的获取的正文数据
        JSONArray data = jsonObject.getJSONArray("data");
        List<AnalysisContentVo> list = data.toJavaList(AnalysisContentVo.class);
} catch (Exception e) {
    log.error("解析正文失败{}", e);
}

post请求示例:

Map<String, String> map= new HashMap<String, String>();
map.put("text1","张三、李四、王五、房间爱睡懒觉可代发哦哦");
map.put("text2","张三、checked李1四、王五123、房间爱睡懒觉可代发哦哦1");

HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type","application/json");
HttpEntity<Map<String, String>> request = new HttpEntity<>(map, headers);


String url1 = "http://ml.intm.com:8087/api/similarity/v1/";
String stringResponseEntity = restTemplate.postForObject(url1, request, String.class);
log.info("返回参数:{}", stringResponseEntity );
JSONObject jsonObject = JSON.parseObject(jsonStr);
String content = jsonObject.getString("content");
String summaryInfo = jsonObject.getString("summary_info");

List<ScreenHotNewsContentBO> contentBOList = JSON.parseArray(content, ScreenHotNewsContentBO.class);
ScreenHotNewsPageResultBO pageResultBO = JSON.parseObject(summaryInfo, ScreenHotNewsPageResultBO.class);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用RestTemplate请求第三方接口时,可以按照以下步骤进行操作: 1. 首先,需要创建一个RestTemplate对象。可以通过new RestTemplate()语句来实现。 2. 接下来,可以使用RestTemplate的getForObject()或postForObject()方法来发送GET或POST请求。这些方法可以接收两个参数请求URL和要发送的数据(如果有)。 3. 如果需要在请求设置查询条件,可以使用HttpHeaders类来创建请求头对象,并使用setContentType()方法设置请求头的Content-Type为application/json。然后,可以使用LinkedMultiValueMap类来创建一个MultiValueMap对象,将查询参数放入该对象。 4. 最后,可以创建一个HttpEntity对象,将MultiValueMap对象和HttpHeaders对象作为参数传入。然后,将该对象作为参数传入getForObject()或postForObject()方法,发送请求并获取响应。 需要注意的是,引用提到了一个小坑:在设置请求头时,需要注意请求头的设置方式。具体原因未知。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用RestTemplate调用第三方接口,获取数据。](https://blog.csdn.net/qq_40790367/article/details/108510538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值