<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<直接上代碼>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Person(對象)
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
PersonReq(請求參數對象)
public class PersonReq { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
DemoService(業務類)
package com.demo; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class DemoService { /** * 獲取列表 * * @param personReq 對象參數 * @return */ public List<Person> personList(PersonReq personReq) { List<Person> list = new ArrayList<>(); Person person = new Person(); person.setAge(personReq.getAge()); person.setName(personReq.getName()); Person person1 = new Person(); person1.setAge(20); person1.setName("2詩"); list.add(person); list.add(person1); return list; } public List<Person> personList() { List<Person> list = new ArrayList<>(); Person person = new Person(); person.setAge(10); person.setName("1詩"); Person person1 = new Person(); person1.setAge(20); person1.setName("2詩"); list.add(person); list.add(person1); return list; } }
DemoController(控制類)
package com.demo; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/demo") public class DemoController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired DemoService demo; @PostMapping("/list") public List<Person> getPerson(@RequestBody PersonReq personReq) { List<Person> people = demo.personList(personReq); logger.info("list:{}", JSON.toJSONString(people)); return people; } @GetMapping("/list1") public List<Person> getPerson() { List<Person> people = demo.personList(); logger.info("list1:{}", JSON.toJSONString(people)); return people; } }
Application (啟動類)
啟動項目,然后下一步,外部 就可以開始調接口了
package com; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableScheduling @EnableSwagger2 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
HttpClients(工具類)
package com.demo; import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; /** * HTTP 工具類 */ public class HttpClients { private static final Logger logger = LoggerFactory.getLogger(HttpClients.class); /** * 向指定URL發送POST方法的請求 * * @param url * @param param * @param ContentType * @return */ public static String sendPost(String url, String param, String ContentType) { String result = ""; try { //存儲請求 PrintWriter out; //存儲接口返回的response BufferedReader in; // 獲取訪問地址 //得到網絡訪問對象java.net.HttpURLConnection URL realUrl = new URL(url); //設置請求參數,以流的形式連接 HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); //設置http的請求頭 conn.setRequestProperty("accept", "*/*"); //設置請求的Contenttype if (ContentType == null || ContentType.equals("")) { if (isJson(param)) { conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); } else { if (url.toLowerCase().contains(".asmx")) { conn.setRequestProperty("Content-Type", "text/xml;charset=utf-8"); } else { conn.setRequestProperty("Content-Type", "application/xml;charset=utf-8"); } } } else { conn.setRequestProperty("Content-Type", ContentType); } //特殊處理:如果是1.0的請求則進一步具體設定setRequestProperty,並對xml格式做優化 if (url.toLowerCase().contains(".asmx")) { if (url.toLowerCase().contains("datacomparews")) { conn.setRequestProperty("SOAPAction", "http://tempuri.org/DataTableCompare"); String Xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<soap:Body>"; Xml += param.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", ""); Xml += "</soap:Body></soap:Envelope>"; param = Xml; } else { String Xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<soap:Body><Request xmlns=\"http://tempuri.org/\"><requestXML>" + "<![CDATA["; Xml += param.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", ""); Xml += "]]></requestXML></Request></soap:Body></soap:Envelope>"; param = Xml; conn.setRequestProperty("SOAPAction", "http://tempuri.org/Request"); } } //keep-alive 發出的請求建議服務器端保留連接,這樣下次向同一個服務器發請求時可以走同一個連接 conn.setRequestProperty("connection", "Keep-Alive"); //設置請求的瀏覽器相關屬性 conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //設定接受的返回流字節碼為UTF-8 conn.setRequestProperty("Accept-Charset", "utf-8"); conn.setRequestProperty("Charset", "utf-8"); //設置超時時間,如果未設置超時時間,但是訪問超時了就會一直卡在這里 conn.setConnectTimeout(50000 * 12); conn.setReadTimeout(50000 * 12); //設置是否向HttpURLConnection輸出,默認為false,發送post請求的不啊必須設置為true conn.setDoOutput(true); //設置是否從httpUrlConnection讀入,默認為true,不設置也可以 conn.setDoInput(true); //處理輸入請求 ,設置請求正文,即要提交的數據 out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")); // 寫入參數到請求中 out.print(param); //flush輸出流的緩沖 out.flush(); //處理輸出接口,遠程對象變為可用 in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { result = e.getMessage(); e.printStackTrace(); } return result; } /** * 向指定URL發送GET方法的請求 * * @param url 接口URL * @return */ public static String sendGet(String url) { HttpURLConnection httpConn = null; BufferedReader in = null; try { URL realUrl = new URL(url); // 打開和URL之間的連接 httpConn = (HttpURLConnection) realUrl.openConnection(); // 設置通用的請求屬性 httpConn.setRequestProperty("accept", "*/*"); httpConn.setRequestProperty("connection", "Keep-Alive"); httpConn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //設定接受的返回流字節碼為UTF-8 httpConn.setRequestProperty("Accept-Charset", "utf-8"); httpConn.setRequestProperty("Charset", "utf-8"); httpConn.setConnectTimeout(5000); httpConn.setReadTimeout(5000); //讀取響應 if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) { StringBuffer content = new StringBuffer(); String tempStr = ""; // 建立實際的連接 httpConn.connect(); // 定義 BufferedReader輸入流來讀取URL的響應 in = new BufferedReader(new InputStreamReader(httpConn.getInputStream())); while ((tempStr = in.readLine()) != null) { content.append(tempStr); } return content.toString(); } else { logger.error("request error!"); } } catch (IOException e) { e.printStackTrace(); // 使用finally塊來關閉輸入流 } finally { try { in.close(); httpConn.disconnect(); } catch (IOException e) { e.printStackTrace(); } } return null; } /** * 判斷字符串是不是json格式 * * @param request * @return */ private static boolean isJson(String request) { try { JSONObject.parseObject(request); return true; } catch (Exception e) { return false; } } }
Demo1Controller(外部調用類)
package com.demo; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/demo1") public class Demo1Controller { private static final Logger logger = LoggerFactory.getLogger(Demo1Controller.class); @GetMapping("/list") public String getPerson1() { PersonReq personReq = new PersonReq(); personReq.setAge(10); personReq.setName("1詩"); String url = "http://localhost:8080/demo/list"; String result = HttpClients.sendPost(url, JSON.toJSONString(personReq), ""); logger.info(" getPerson1 list:{}", result); return result; } /** * GET 測試 * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String url = "http://localhost:8080/demo/list1"; String result = HttpClients.sendGet(url); logger.info("result:{}", result); } /** * POST 測試 * * @param args * @throws Exception */ /*public static void main(String[] args) { PersonReq personReq = new PersonReq(); personReq.setAge(10); personReq.setName("1詩"); String url = "http://localhost:8080/demo/list"; String result = HttpClients.sendPost(url, JSON.toJSONString(personReq), ""); logger.info("result:{}", result); }*/ }
<<<<<<<<<<<<<<<OK>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>