最近学习Spring框架,本文介绍了使用Spring的restTemplete进行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
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
61
62
63
64
65
66
67
|
/*
* rest templete
*/
public class RestTemplateTest {
//private static String url = "http://10.2.1.46:8080";
private static String url = "http://127.0.0.1:8080/test";
private static String autoDeploy = "/api/ddd/manages/yyy/1111";
public static void main(String[] args) throws UnsupportedEncodingException {
JSONObject token1 = LoginTest.login(url);
JSONObject token = new JSONObject();
token.put("token", token1.getString("token"));
token.put("userName", "chenchen.ming@56qq.com");
String name = "明辰晨";
token.put("name", URLEncoder.encode(name, "UTF-8"));
String jsonBody = DmsAutoDeployTest.dmsAutoDeployData();
autoDeploy(jsonBody,token.toJSONString());
}
/*
* 主要的post方法
*/
public static void autoDeploy(String json,String token){
String autoDeployUrl = url + autoDeploy;
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
//一定要设置好ContentType为utf8否则会乱码
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("Authentication", token);//设置自定义session header
HttpEntity<String> formEntity = new HttpEntity<String>(json, headers);
Map<String, Object> parameterMap = new HashMap<>();
//entity = Header,uriVariables = Parameters;
restTemplate.postForObject(autoDeployUrl, formEntity, String.class, parameterMap);
}
/*
* 测试
*/
public static void test4(){
JSONObject response = null;
Map<String,Object> param = new HashMap<>();
param.put("ming", "chyen");
String json = "haha";
try {
response = RestUtil.post("http://127.0.0.1:8080/cloud-master/api/release/manages/detail", JSONObject.class,null,null,json);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(response);
}
/**
* 测试
*/
public static void test(){
RestTemplate restTemplate = new RestTemplate();
Map<String, Object> parameterMap = new HashMap<>();
restTemplate.getForObject( "url" , String. class ,parameterMap);
//factory.createRequest(uri, httpMethod)
}
}
|
Util
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
|
/**
* 使用Spring的restTemplate进行http请求
* @author Mingchenchen
*
*/
public class RestUtil {
private static RestTemplate restTemplate = new RestTemplate();
/**
* Get方法
*
* @param url:地址
* @param returnClassName:返回对象类型,如:String.class
* @param parameters:parameter参数
* @return
*/
public static <T> T get(String url, Class<T> returnClassName, Map<String, Object> parameters){
if (parameters == null ) {
return restTemplate.getForObject(url, returnClassName);
}
return restTemplate.getForObject(url, returnClassName, parameters);
}
/**
* post请求,包含了路径,返回类型,Header,Parameter
*
* @param url:地址
* @param returnClassName:返回对象类型,如:String.class
* @param inputHeader
* @param inputParameter
* @param jsonBody
* @return
*/
public static <T> T post(String url,Class<T> returnClassName,Map<String,Object> inputHeader,Map<String,Object> inputParameter,String jsonBody){
//请求Header
HttpHeaders httpHeaders = new HttpHeaders();
//拼接Header
if (inputHeader != null ) {
Set<String> keys = inputHeader.keySet();
for (Iterator<String> i = keys.iterator(); i.hasNext();) {
String key = (String) i.next();
httpHeaders.add(key, inputHeader.get(key).toString());
}
}
//设置请求的类型及编码
MediaType type = MediaType.parseMediaType( "application/json; charset=UTF-8" );
httpHeaders.setContentType(type);
httpHeaders.add( "Accept" , "application/json" );
List<MediaType> acceptableMediaTypes = new ArrayList<>();
acceptableMediaTypes.add(MediaType.ALL);
httpHeaders.setAccept(acceptableMediaTypes);
HttpEntity<String> formEntity = new HttpEntity<String>(jsonBody, httpHeaders);
if (inputParameter== null ) {
return restTemplate.postForObject(url, formEntity, returnClassName);
}
return restTemplate.postForObject(url, formEntity, returnClassName, inputParameter);
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/jinzhencs/article/details/51981960