package me.test;
import java.net.URI;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
public class TestCasRESTfulApi {
@SuppressWarnings("unchecked")
public static void test() {
String casUrlPrefix = "http://login-test.his.com/tcgroup-sso-web";
String username = "15372712873";
String password = "123456";
// GET TGT
RestTemplate rest = new RestTemplate();
rest.setMessageConverters(Arrays.asList(new StringHttpMessageConverter(), new FormHttpMessageConverter()));
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.set("username", username);
params.set("password", password);
URI tgtUrl = rest.postForLocation(casUrlPrefix + "/v1/tickets", params, Collections.emptyMap());
System.out.println("[" + tgtUrl + "]");
// GET ST
String service = "http://login-test.his.com/tcgroup-his-web/client/nop.do";
params.clear();
params.set("service", service);
ResponseEntity<String> st = rest.postForEntity(tgtUrl, params, String.class);
System.out.println("[" + st.getBody() + "]");
// Using ST get data from SSO app(tcgroup-his-web).
Map<String, Object> urlParams = new HashMap<String, Object>();
urlParams.put("ticket", st.getBody());
ResponseEntity<String> html = rest.getForEntity(service + "?ticket=" + st.getBody(), String.class, urlParams);
System.out.println("[" + html.getBody() + "]");
}
public static void main(String[] args) {
// 测试总次数
int count = 100;
// 开始测试
long start = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
test();
}
long end = System.currentTimeMillis();
long cost = end - start;
System.out.println("total time cost : " + cost);
System.out.println("Done.");
}
}