1,基本介绍
Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,
本次介绍三种:
1.HttpURLConnection实现
2.HttpClient实现
3.Spring的RestTemplate
2,Spring的RestTemplate
①:添加restful配置(可以添加在启动类中)
//调用服务数据,实现负载均衡
@Bean(name = "restTemplate")
//@LoadBalanced 默认使用应用名访问服务端接口
RestTemplate restTemplate(){
return new RestTemplate();
}
②:添加restTemplate注入
@Resource
private RestTemplate restTemplate;
③:调用接口方法
//因为服务端登录拦截处理,所以此处必须使用contentmessage进行校验才可以通过调用接口
String stringJsonvalue = restTemplate.getForObject("http://IP:port/admin/pingtaimessage/classlist.do?contentmessage="+Tools.encode("sfweofwef24237987"), String.class);
List<Classinfo> classinfos = JSON.parseArray(stringJsonvalue, Classinfo.class); //服务端返回的数据转为json,此处需要将json转为对象或者字符串
System.out.println(classinfos);
3,HttpURLConnection实现
①:添加httpclient依赖包
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.8</version>
</dependency>
②:接口调用
package com.cqe.test;
import com.cqe.util.Tools;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author:qiwentao
* @creattime:2021-06-29 10:15
*/
public class RestfulApiTest {
public static void main(String[] args) throws Exception {
//因为服务端登录拦截处理,所以此处必须使用contentmessage进行校验才可以通过调用接口
String url = "http://IP:port/admin/pingtaimessage/classlist.do?contentmessage="+ Tools.encode("sfweofwef24237987");
URL serverUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) serverUrl.openConnection();
connection.setRequestMethod("GET");
if (connection.getResponseCode() != 200) {
throw new RuntimeException("HTTP GET Request Failed with Error code : "+ connection.getResponseCode());
}
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader((connection.getInputStream())));
String output;
System.out.println("Output from Server:");
while ((output = responseBuffer.readLine()) != null) {
System.out.println(output);
}
connection.disconnect();
}
}
4,HttpClient实现
接口调用
import com.alibaba.fastjson.JSON;
import com.cqe.entity.Classinfo;
import com.cqe.util.Tools;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.stream.Collectors;
public class RestfulApiTest {
public static void main(String[] args) {
HttpClient httpClient = HttpClients.createDefault();
//因为服务端登录拦截处理,所以此处必须使用contentmessage进行校验才可以通过调用接口
HttpGet httpGet = new HttpGet("http://IP:port/admin/pingtaimessage/classlist.do?contentmessage="+Tools.encode("sfweofwef24237987"));
try {
HttpResponse execute = httpClient.execute(httpGet);
HttpEntity entity = execute.getEntity();
System.out.println(entity);
String result = new BufferedReader(new InputStreamReader(entity.getContent())) .lines().collect(Collectors.joining(""));
System.out.println(result);
List<Classinfo> classinfos = JSON.parseArray(result, Classinfo.class);
System.out.println(classinfos.size());
}catch (Exception e){
e.printStackTrace();
}
}
}