Spring RestTemplate execute()方法无法发送JSON负载
在我的应用程序中,我需要从另一个请求获取数据并将其链接到新的请求中 我必须使用Spring RestTemplate execute()方法无法发送JSON负载,spring,resttemplate,Spring,Resttemplate,在我的应用程序中,我需要从另一个请求获取数据并将其链接到新的请求中 我必须使用restemplate的exchange()方法,因为我对jacksons lib有问题,无法添加/更改libs 这是我的代码: final RequestCallback requestCallback = new RequestCallback() { @Override public void doWithRequest(final ClientH
restemplate
的exchange()
方法,因为我对jacksons lib有问题,无法添加/更改libs
这是我的代码:
final RequestCallback requestCallback = new RequestCallback() {
@Override
public void doWithRequest(final ClientHttpRequest request) throws IOException {
request.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
// Add basic auth header
String auth = username + ":" + password;
byte[] encodedAuth = Base64Utils.encode(auth.getBytes(StandardCharsets.US_ASCII));
String authHeader = "Basic " + new String(encodedAuth);
request.getHeaders().add("Authorization", authHeader);
// Add Headers Request
Enumeration headerNamesReq = servletRequest.getHeaderNames();
while (headerNamesReq.hasMoreElements()) {
String headerName = (String) headerNamesReq.nextElement();
if (whiteListedHeaders.contains(headerName.toLowerCase())) {
String headerValue = servletRequest.getHeader(headerName);
request.getHeaders().add(headerName, headerValue);
}
}
request.getHeaders().forEach((name, value) -> {
log.info("RestExecutorMiddleware", "HEADERS ---\t" + name + ":" + value);
});
IOUtils.copy(new ByteArrayInputStream(payload.getBytes()), request.getBody());
}
};
// Factory for restTemplate
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
restTemplate.setRequestFactory(requestFactory);
ClientHttpResponse responsePost = restTemplate.execute(url, method, requestCallback, new ResponseFromHeadersExtractor());
但最后,端点无法接收我的JSON(接收数据,但不是JSON)
我哪里错了
谢谢非常不准确的代码。把所有的步骤一对一地完成,它就会起作用,你以后会进行优化
Basic:
,并正确设置标题headers.setContentType(MediaType.APPLICATION\u JSON)
mapper.writeBalueAsString()
进行序列化。如果您确实不能使用外部库,HttpEntity应该这样做:var request=newHttpEntity(,headers)代码>
restemplate.postForObject()
,restemplate.getForObject()
,restemplate.postForEntity()
,等等:restemplate.postForObject(uri、请求、响应对象.class)