使用HttpClient接受另一个系统接口提供的数据
本文适用于新手不会使用httpclient请求接口的情况,大神请别闹
httpclient介绍
自行百度,这里不做介绍
第一步,先封装httpclient
这里仅封装get请求,post同理,自行百度
public static String doGet(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建uri
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
}
URI uri = builder.build();
// 创建http GET请求
HttpGet httpGet = new HttpGet(uri);
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
public static String doGet(String url) {
return doGet(url, null);
}
第二步,系统一提供接口返回数据
@RequestMapping(value="/list", method = RequestMethod.GET)
@ResponseBody
public JSONArray queryNewIpPatient(){
//自己的接口
List<Student> list=studentSrvInf.getAllStudent();
if (list.size()>0){
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(list));
System.out.println(jsonArray);
return jsonArray;
}else {
return null;
}
}
第三步,系统二接收系统一接口返回数据并处理
public void getPost()throws Exception{
//接受get请求返回的参数,此处直接输出到页面可能会乱码
String s= HttpClientUtil.doGet("http://127.0.0.1:8080/list");
//封装成jsonArray之后就不会乱码了嘻嘻
JSONArray Json= JSONArray.fromObject(s);
//遍历方法
for(int i=0;i<Json.size();i++){
//括号里为返回的json数组中的对象的属性名,具体可以将json打印出来查看
String name=Json.get(i).getString("name");
}
}
依赖包:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>