java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > 使用restTemplate.postForEntity()

使用restTemplate.postForEntity()的问题

作者:海枯石烂i

这篇文章主要介绍了使用restTemplate.postForEntity()的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用restTemplate.postForEntity()

@Component
public class RemoteQuestUtil {
    @Autowired
    private RestTemplate restTemplate;
    public String send(String srvcCode, String request){
        //srvcCode 获取对应交易 现场适配
        MockPropertiesUtil instance = MockPropertiesUtil.getInstance();
        String url = instance.getProperty(srvcCode);
		//处理接收接口只支持JSONOBject
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity request1 = new HttpEntity<>(request, headers);
        log.info("请求报文:{}",request);
        ResponseEntity<String> jsonObjectResponseEntity = restTemplate.postForEntity(url, request1, String.class);
        String resp = jsonObjectResponseEntity.getBody();
        log.info("响应报文:{}",resp);
        return resp;
    }
}

MockPropertiesUtil

public class MockPropertiesUtil {
    public  static Properties pro = new Properties();
    public static MockPropertiesUtil instance = new MockPropertiesUtil();
    public static MockPropertiesUtil getInstance() {
        return instance;
    }
    static {
        InputStream in ;
        try {
                in = MockPropertiesUtil.class.getClassLoader().getResourceAsStream("mock-properties.properties"); //加载文件将文件加载为
        pro = new Properties();
            pro.load(in);
        } catch (IOException e) {
            log.error("加载Mock配置文件[mock-properties.properties]时异常",e);
            throw new PlatformException(PlatformError.LOADCONFIG_ERROR);
        }
        try {
            if (in != null){
                in.close();
            }
        } catch (IOException e) {
            log.error("关闭流异常",e);
        }
    }
    public String getProperty(String key) {
        if (StringUtil.isEmpty(key)) {
            log.warn("key is null.");
            return null;
        }
        if (!pro.containsKey(key)){
            log.info("无此服务码:{}",key);
            throw new PlatformException(PlatformError.GET_URL_BY_CODE_ERROR);
        }
        //通过键值获得对应的url key=url
        String url = pro.getProperty(key);
        log.info("服务码:{},对应的url为:{}",key,url);
        return url;
    }
}

RestTemplate().postForEntity的参数

RestTemplate().postForEntity() 是 Spring Framework 提供的一个用于发送 HTTP POST 请求并获取响应的方法。

以下是该方法的参数详解

注意事项

方法返回一个 ResponseEntity 对象,其中包含 HTTP 响应的状态码、响应头以及解析后的响应体。你可以通过 ResponseEntity 对象获取所需的数据。

以下是一个使用 RestTemplate().postForEntity() 方法发送 POST 请求的示例代码:

import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
public class RestTemplateExample {
    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        // 请求 URL
        String url = "http://example.com/api";
        // 构建请求体
        User user = new User("John", 30); // 自定义 User 类
        HttpEntity<User> request = new HttpEntity<>(user);
        // 发送 POST 请求并获取响应
        ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
        // 获取响应结果
        HttpStatus statusCode = response.getStatusCode();
        HttpHeaders headers = response.getHeaders();
        String body = response.getBody();
        // 处理响应结果
        System.out.println("Status Code: " + statusCode);
        System.out.println("Response Headers: " + headers);
        System.out.println("Response Body: " + body);
    }
}

也可以使用Map传递Json数据,

例如:

Map<String, Object> requestMap = new HashMap<>();
  // 发动机型号
requestMap.put("engine_model", "1234");
// 发动机编号
requestMap.put("engine_code", "6789"); 
  // 请求 URL
String url = "http://example.com/api";
 // 调对方接口
ResponseEntity<String> responseEntity = new RestTemplate().postForEntity(url, requestMap , String.class);
Map<String, Object> responseBodyMap = GsonUtil.gsonToMaps(responseEntity.getBody());
 // 对方接口返回值  true传输成功 false  失败
Map<String, Object> result = (Map<String, Object>) responseBodyMap.get("result");
boolean isSuccess = (Boolean) result.get("success");

根据上述的布尔值判断接口是否调用成功,进行后续逻辑。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文