springboot RestTemplate
程序员文章站
2024-02-29 18:39:58
...
RestConfig.java
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.time.Duration;
@Configuration
public class RestConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
RestTemplate restTemplate = restTemplateBuilder
.setConnectTimeout(Duration.ofMillis(5000L))
.setReadTimeout(Duration.ofMillis(30000L))
.build();
/**
* RestTemplate 有个机制是请求状态码非200 就抛出异常,会中断接下来的操作。
* 如果不想中断对结果数据得解析,可以通过覆盖默认的 ResponseErrorHandler ,
* 见下面的示例,示例中的方法中基本都是空方法,
* 只要对hasError修改下,让他一直返回true,即是不检查状态码及抛异常了。
*/
ResponseErrorHandler responseErrorHandler = new ResponseErrorHandler() {
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
System.out.println(response);
return false;
}
@Override
public void handleError(ClientHttpResponse response) throws IOException {
}
};
restTemplate.setErrorHandler(responseErrorHandler);
return restTemplate;
}
}
Test.java
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
@Autowired
private RestTemplate restTemplate;
@Test
void getRestTemplate() {
ResponseEntity<String> responseEntity = restTemplate.getForEntity("https://spring.io/projects/spring-boot", String.class);
log.info("响应码:{}", responseEntity.getStatusCodeValue());
log.info("响应体:{}", responseEntity.getBody());
}
@Test
void postForEntity() {
String url = "https://zmhd.xiaoxinzang.cn/api/login";
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
HashMap<String, Object> map = new HashMap<>();
map.put("username","xxadmin");
map.put("password","123456");
map.put("code",1);
String aa = JSONObject.toJSONString(map);
HttpEntity<String> objectHttpEntity = new HttpEntity<>(aa, httpHeaders);
System.out.println(aa);
// String url = "http://dahuacom.cn.utools.club/admin/API/accounts/authorize";
JSONObject json = restTemplate.exchange(url, HttpMethod.POST, objectHttpEntity, JSONObject.class, new Object[]{}).getBody();
System.out.println(json);
}
上一篇: 阿里云短信服务