spring-simple-http

基础搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@RestController
@RequestMapping
public class TestController {

// http://127.0.0.1:8080/hello?username=idea360
@RequestMapping("/hello")
public String hello(@RequestParam(name = "username", defaultValue = "unknown user") String username) {
return "Hello " + username;
}

// http://127.0.0.1:8080/save_form?username=idea360&password=123456
@RequestMapping("/save_form")
@ResponseBody
public String saveForm(User u) {
return "user will save: name=" + u.getUsername() + ", password=" + u.getPassword();
}

// http://127.0.0.1:8080/save_body
@PostMapping("/save_body")
public User saveBody(@RequestBody User user) {
return user;
}

}

java11 HttpClient

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class BaseHttpTest {

protected String username = "idea360.cn";
protected String password = "123456";
protected String url_query = "http://127.0.0.1:8080/hello";
protected String url_form = "http://127.0.0.1:8080/save_form";
protected String url_body = "http://127.0.0.1:8080/save_body";

protected String getFormQuery() {
Map<String, String> formData = new HashMap<>();
formData.put("username", username);
formData.put("password", password);
return formData.entrySet()
.stream()
.map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "=" + URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
.collect(Collectors.joining("&"));
}

protected URI getQueryUri(String url) {
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("username", username)
.queryParam("password", password);
return builder.build().encode().toUri();
}

@SneakyThrows
protected String getBodyJson() {
Map<String, String> body = new HashMap<>();
body.put("username", username);
body.put("password", password);
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(body);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
@SpringBootTest
class Java11HttpTest extends BaseHttpTest{

@Test
void getQuery() throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(getQueryUri(url_query))
.timeout(Duration.of(15, SECONDS))
.header("Accept", "application/json")
.header("Content-Type", "application/x-www-form-urlencoded")
.GET()
.build();
HttpClient client = HttpClient.newBuilder().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}

@Test
void getForm() throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(getQueryUri(url_form))
.timeout(Duration.of(15, SECONDS))
.header("Accept", "application/json")
.header("Content-Type", "application/x-www-form-urlencoded")
.GET()
.build();
HttpClient client = HttpClient.newBuilder().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}

@Test
void postForm() throws Exception{
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url_form))
.timeout(Duration.of(15, SECONDS))
.header("Accept", "application/json")
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(getFormQuery()))
.build();
HttpClient client = HttpClient.newBuilder().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}

@Test
void postJson() throws Exception{
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url_body))
.timeout(Duration.of(15, SECONDS))
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(getBodyJson(), UTF_8))
.build();
HttpClient client = HttpClient.newBuilder().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}

}

RestTemplate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@SpringBootTest
class RestTemplateHttpTest extends BaseHttpTest{

@Resource
private RestTemplate restTemplate;

@Test
void getQuery() throws Exception {
URI uri = getQueryUri(url_query);
String response = restTemplate.getForObject(uri, String.class);
System.out.println(response);
}

@Test
void getForm() throws Exception{
URI uri = getQueryUri(url_form);
String response = restTemplate.getForObject(uri, String.class);
System.out.println(response);
}

@Test
void postForm() throws Exception{
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

MultiValueMap<String, Object> params= new LinkedMultiValueMap<>();
params.add("username", username);
params.add("password", password);

HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(params, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url_form, httpEntity, String.class);
System.out.println(response.getBody());
}

@Test
void postJson() throws Exception{
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

Map<String, Object> params = new HashMap<>();
params.put("username", username);
params.put("password", password);

HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url_body, httpEntity, String.class);
System.out.println(response.getBody());
}

}