import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
public class RestFulApiTester {
public static String baseUrl = "http://127.0.0.1:8080/wcp/";
public static String secret = "FC7E18DA4DCA06FFB087AD65591D49B0";
public static String testOrgId = null;
public static String testUserId = null;
public static void checkState(JSONObject json) {
String state = json.get("STATE").toString();
if (state.equals("1")) {
throw new RuntimeException(json.getString("MESSAGE"));
}
}
public static void test1() {
System.out.println("组织机构查询");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/get/organization.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test2() {
System.out.println("创建组织机构");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
data.put("sort", "1");
data.put("name", "testOrg");
JSONObject obj = httpPost(baseUrl + "outer/post/organization.do", data);
checkState(obj);
System.out.println(obj.getString("ID"));
testOrgId = obj.getString("ID");
}
public static void test3() {
System.out.println("更新组织机构");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
data.put("id", testOrgId);
data.put("comments", "update");
JSONObject obj = httpPost(baseUrl + "outer/put/organization.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test4() {
System.out.println("删除组织机构");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
data.put("id", testOrgId);
JSONObject obj = httpPost(baseUrl + "outer/delete/organization.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test5() {
System.out.println("用户查询");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/get/user.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test6() {
System.out.println("创建用户");
Map<String, String> data = new HashMap<>();
data.put("name", secret);
data.put("loginname", secret);
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/post/user.do", data);
checkState(obj);
testUserId = obj.getString("ID");
System.out.println(obj);
}
public static void test7() {
System.out.println("更新用户");
Map<String, String> data = new HashMap<>();
data.put("id", testUserId);
data.put("comments", "update");
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/put/user.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test8() {
System.out.println("删除用户");
Map<String, String> data = new HashMap<>();
data.put("id", testUserId);
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/delete/user.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test9() {
System.out.println("分类查询");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/get/category.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test10() {
System.out.println("知识查询");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/get/know.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test11() {
System.out.println("问答查询");
Map<String, String> data = new HashMap<>();
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/get/fqa.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test12() {
System.out.println("全文检索");
Map<String, String> data = new HashMap<>();
data.put("word", "知识");
data.put("domtype", "all");
data.put("secret", secret);
JSONObject obj = httpPost(baseUrl + "outer/search.do", data);
checkState(obj);
System.out.println(obj);
}
public static void test13() {
System.out.println("免密登陸");
Map<String, String> data = new HashMap<>();
data.put("loginname", "sysadmin");
data.put("secret", secret);
System.out.println("通过登录名" + "sysadmin" + "换取注册码...");
JSONObject obj = httpPost(baseUrl + "outer/regist/login.do", data);
String loginCode = obj.get("CERTIFICATE").toString();
System.out.println("注册码为:" + loginCode);
// -----------------------------------------------------------------------------------------
Map<String, String> data2 = new HashMap<>();
data2.put("certificate", loginCode);
data2.put("secret", secret);
System.out.println("通过注册码" + loginCode + "换取登录名 ...");
JSONObject objs = httpPost(baseUrl + "outer/get/login.do", data2);
System.out.println("换取的登录名为:" + objs.getString("LOGINNAME"));
}
public static JSONObject httpPost(String url, Map<String, String> data) {
long startTime = new Date().getTime();
HttpPost httpPost = new HttpPost(url);
CloseableHttpResponse response = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();
httpPost.setConfig(requestConfig);
// httpPost.addHeader("Content-Type", "application/json");
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
for (String key : data.keySet()) {
params.add(new BasicNameValuePair(key, data.get(key)));
}
httpPost.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
response = httpClient.execute(httpPost, new BasicHttpContext());
if (response.getStatusLine().getStatusCode() != 200) {
System.out.println(
"request url failed, http code=" + response.getStatusLine().getStatusCode() + ", url=" + url);
return null;
}
HttpEntity entity = response.getEntity();
if (entity != null) {
String resultStr = EntityUtils.toString(entity, "utf-8");
JSONObject result = new JSONObject(resultStr);
return result;
}
} catch (IOException e) {
if (url.indexOf("info/version") <= 0) {
System.out.println("request url=" + url + ", exception, msg=" + e.getMessage());
}
} finally {
try {
httpClient.close();
} catch (IOException e) {
System.out.println("httpPost:" + e + e.getMessage());
}
if (response != null) {
try {
response.close();
} catch (IOException e) {
System.out.println("httpPost:" + e + e.getMessage());
}
}
long endTime = new Date().getTime();
System.out.println("httpPost-runtime:" + (endTime - startTime));
}
return null;
}
}