1.post请求,参数为json格式
1.1
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 参数对象 person
HttpEntity<Person> entity = new HttpEntity(person, headers);
// 如果没有返回值或者不获取返回值,泛型可以写Object
ResponseEntity<Object> r = restTemplate.postForEntity("http://127.0.0.1:8080/t", entity, Object.class);
//如果需要获取返回值,必须指定具体泛型或者使用Map
ResponseEntity<Map> r = restTemplate.postForEntity("http://127.0.0.1:8080/t", entity, Map.class);
Map map = r.getBody();
// 比如返回值是Person
ResponseEntity<Person> r = restTemplate.postForEntity("http://127.0.0.1:8080/t", entity, Person.class);
Person person = r.getBody();
1.2
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 参数对象 person
HttpEntity<Person> entity = new HttpEntity(person, headers);
//直接返回 数据对象
Person r = restTemplate.postForObject(url, entity, Person.class);
2 get请求
//同上面postForEntity 返回值泛型Map也可以的
ResponseEntity<Person> r = restTemplate.getForEntity("http://127.0.0.1:8080/t?id=111&name=klkkkkk", Person.class);
附:restTemplateconfig
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.DefaultResponseErrorHandler;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.nio.charset.Charset;
@Configuration
public class RestTemplateConfig {
@Autowired
private RestTemplateBuilder builder;
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = builder.build();
restTemplate.getMessageConverters().set(1,
new StringHttpMessageConverter(Charset.forName("UTF-8")));
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
@Override
public void handleError(ClientHttpResponse response) throws IOException {
if (response.getRawStatusCode() != 401) {
super.handleError(response);
}
}
});
return restTemplate;
}
@Bean
public CustomRestTemplateCustomizer customRestTemplateCustomizer() {
return new CustomRestTemplateCustomizer();
}
@Bean
@DependsOn(value = {"customRestTemplateCustomizer"})
public RestTemplateBuilder restTemplateBuilder() {
return new RestTemplateBuilder(customRestTemplateCustomizer());
}
}
//============================================================================
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.client.RestTemplateCustomizer;
import org.springframework.web.client.RestTemplate;
@Slf4j
public class CustomRestTemplateCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor());
}
}
//============================================================================
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import java.io.IOException;
@Slf4j
public class CustomClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
logRequestDetails(request);
return execution.execute(request, body);
}
private void logRequestDetails(HttpRequest request) {
log.info("Headers: {}", request.getHeaders());
log.info("Request Method: {}", request.getMethod());
log.info("Request URI: {}", request.getURI());
}
}
添加拦截器,打印调用信息
看效果: