Spring 원 격 으로 HttpClient/RestTemplate 를 호출 하 는 방법
두 시스템 간 에 어떻게 서로 방문 합 니까?두 tomcat 의 프로젝트 는 어떻게 서로 방문 합 니까?
HttpClient 를 사용 하여 크로스 시스템 의 인터페이스 호출 을 실현 합 니 다.
소개:
홈 페이지:http://hc.apache.org/index.html
HttpComponents
HttpClient 는 get,post,put,delete,...등 요청 을 보 낼 수 있 습 니 다.
사용:
좌표 가 져 오기
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
//1、 HttpClient Get
public class DoGET {
public static void main(String[] args) throws Exception {
// Httpclient ,
CloseableHttpClient httpclient = HttpClients.createDefault();
// HttpGet ,
HttpGet httpGet = new HttpGet("http://www.baidu.com/");
CloseableHttpResponse response = null;
try {
// , 。
response = httpclient.execute(httpGet);
// 200
if (response.getStatusLine().getStatusCode() == 200) {
// ,
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
} finally {
if (response != null) {
//
response.close();
}
//
httpclient.close();
}
}
}
//2、 HttpClient Get
public class DoGETParam {
public static void main(String[] args) throws Exception {
// Httpclient
CloseableHttpClient httpclient = HttpClients.createDefault();
// URI ,
URI uri = new URIBuilder("http://www.baidu.com/s").setParameter("wd", "java").build();
// http GET
HttpGet httpGet = new HttpGet(uri);
// HttpGet get = new HttpGet("http://www.baidu.com/s?wd=java");
CloseableHttpResponse response = null;
try {
//
response = httpclient.execute(httpGet);
// 200
if (response.getStatusLine().getStatusCode() == 200) {
//
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
} finally {
if (response != null) {
response.close();
}
httpclient.close();
}
}
}
//3、 HttpClient POST
public class DoPOST {
public static void main(String[] args) throws Exception {
// Httpclient
CloseableHttpClient httpclient = HttpClients.createDefault();
// http POST
HttpPost httpPost = new HttpPost("http://www.oschina.net/");
// 。
httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
CloseableHttpResponse response = null;
try {
//
response = httpclient.execute(httpPost);
// 200
if (response.getStatusLine().getStatusCode() == 200) {
//
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
} finally {
if (response != null) {
response.close();
}
//
httpclient.close();
}
}
}
//4、 HttpClient POST
public class DoPOSTParam {
public static void main(String[] args) throws Exception {
// Httpclient
CloseableHttpClient httpclient = HttpClients.createDefault();
// http POST ,
HttpPost httpPost = new HttpPost("http://www.oschina.net/search");
// , post
List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
parameters.add(new BasicNameValuePair("scope", "project"));
parameters.add(new BasicNameValuePair("q", "java"));
parameters.add(new BasicNameValuePair("fromerr", "8bDnUWwC"));
// form
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
// httpPost
httpPost.setEntity(formEntity);
CloseableHttpResponse response = null;
try {
//
response = httpclient.execute(httpPost);
// 200
if (response.getStatusLine().getStatusCode() == 200) {
//
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
} finally {
if (response != null) {
response.close();
}
//
httpclient.close();
}
}
}
2.RestTemplateRestTemplate 는 Spring 이 제공 하 는 Rest 서 비 스 를 방문 하 는 클 라 이언 트 로 RestTemplate 는 원 격 Http 서 비 스 를 편리 하 게 방문 하 는 다양한 방법 을 제공 합 니 다.
HTTP 개발 은 apache 의 HttpClient 로 개 발 된 것 으로 코드 가 복잡 하고 자원 회수 에 도 신경 을 써 야 한다.코드 가 복잡 하고 불필요 한 코드 가 많다.
좌표 가 져 오기
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
RestTemplate 대상 만 들 기
@Configuration// , Spring
public class RestTemplateConfig {
/**
* RestTemplate , RestTemplate Spring
* @return
*/
@Bean
public RestTemplate restTemplate(){
RestTemplate restTemplate = new RestTemplate();
//
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
return restTemplate;
}
}
RestTempController
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
// Spring restTemplate
@Resource
private RestTemplate restTemplate;
/**
* Get ,
*/
@GetMapping("/{id}")
public ResponseEntity<String> findById(@PathVariable Integer id){
// : RestTemplate get
ResponseEntity<String> entity = restTemplate.getForEntity("http://localhost:8090/goods2/1", String.class);
System.out.println("entity.getStatusCode():"+entity.getStatusCode());
System.out.println(entity.getBody());
return entity;
}
/**
* Post ,
*/
@PostMapping
public ResponseEntity<String> saveGoods(@RequestBody Goods goods){
// RestTemplate
/**
* : URI
* :
* :
*/
ResponseEntity<String> entity = restTemplate.postForEntity("http://localhost:8090/goods2", goods, String.class);
System.out.println("entity.getStatusCode():"+entity.getStatusCode());
System.out.println(entity.getBody());
return entity;
}
@PutMapping
public ResponseEntity<String> updateGoods(@RequestBody Goods goods){
restTemplate.put("http://localhost:8090/goods2",goods);
return new ResponseEntity<>(" ", HttpStatus.OK);
}
@DeleteMapping("/{id}")
public ResponseEntity<String> deleteById(@PathVariable Integer id){
restTemplate.delete("http://localhost:8090/goods2/"+id);
return new ResponseEntity<>(" ", HttpStatus.OK);
}
}
Maven 만 사용 하고 springboot 프레임 워 크 를 사용 하지 않 을 때 pom 파일 에 의존 하 는 가 져 오기 만 하면 됩 니 다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
직접 new RestTemplate()대상 이 사용 하면 됩 니 다.Spring 원 격 으로 HttpClient/RestTemplate 를 호출 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring 원 격 으로 HttpClient/RestTemplate 를 호출 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.