Springboot中使用RestTemplate


配置RestTemplate類:

package com.deepbluebi.aip.smartoffice.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.converter.StringHttpMessageConverter;
import java.nio.charset.Charset;
/**
 * 描述:
 *
 * @author xxx
 * @create 2019-07-25-15:55
 */
@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
        RestTemplate restTemplate= new RestTemplate(factory);
        // 支持中文編碼
        restTemplate.getMessageConverters().set(1,
                new StringHttpMessageConverter(Charset.forName("UTF-8")));
        return restTemplate;

    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);//單位為ms
        factory.setConnectTimeout(5000);//單位為ms
        return factory;
    }
}

使用JSON參數發送Post請求

// 方式一
public ResultData<String> getDhgLoginUrl(@RequestParam String loginName) {
    String resultSring = "";
    try {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode jsonObject = objectMapper.createObjectNode();
        jsonObject.put("clientId", clientId);
        jsonObject.put("paramType", "1");
        jsonObject.put("loginName", loginName);
        jsonObject.put("redirectUrl", dhgUrl);

        HttpEntity<String> request = new HttpEntity<String>(jsonObject.toString(), headers);
        String resultJsonString = restTemplate.postForObject(dhgUrl + "/sso/V2/getToken", request, String.class);
        JsonNode root = objectMapper.readTree(resultJsonString);
        resultSring = dhgUrl + "/sso/token?clientId=" + clientId + "&redirectUri=" + redirectUri + "&code=" + root.get("data").get("token").textValue();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ResultData.data(resultSring);
}

// 方式二
public ResultData<String> getSrmLoginUrl(String loginName) {
    String resultSring = "";
    try {
        CommonParam apiParam = new CommonParam();
        //操作者所屬公司編碼
        apiParam.setOperateCompanyCode(companyCode);
        //當前時間對應的時間戳(秒數)
        apiParam.setTimestamps(System.currentTimeMillis() / 1000);

        String sign = buildCurrentSign(JSON.toJSONString(apiParam), appSecret);
        apiParam.setSign(sign);

        BodyParam body = new BodyParam();
        body.setMobileArea("+86");

        ReqDTO reqDTO = new ReqDTO();
        reqDTO.setCommonParam(apiParam);
        reqDTO.setBody(body);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        HttpEntity<String> request = new HttpEntity<String>(JSON.toJSONString(reqDTO), headers);
        String resultJsonString = restTemplate.postForObject(srmUrl, request, String.class);
        JSONObject data = JSON.parseObject(resultJsonString);
        data = (JSONObject) data.get("data");
        resultSring = data.getString("ssoUrl");
    } catch (Exception e) {
        log.error("獲取SrmLoginUrl失敗:{}", e.getMessage(), e);
    }
    return ResultData.data(resultSring);
}

使用form-data發送Post請求

String url = "http://crm.szbxl.com:18280/qrlogin.action";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);

MultiValueMap map = new LinkedMultiValueMap();
map.add("m", "qr");

HttpEntity requestBody = new HttpEntity(map, headers);
String resultJsonString = restTemplate.postForObject(url, requestBody, String.class);
JSONObject results = JSONObject.parseObject(resultJsonString);
# 值為json
JSONObject data = (JSONObject) results.get("data");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM