java后台系統之間接口調用


1.背景

  兩個系統,一個認證系統,一個入學系統,入學系統要調用認證系統獲得數據。

2.實現思路

    入學系統web.xml中配置訪問認證系統接口配置,將接口作為web的全局參數,示例:  

<!-- 統一認證教師接口 -->
<context-param>
    <param-name>teacherInterface</param-name>
   <param-value>http://192.168.1.104/sso/global/dataInterface/getTeacher.action</param-value>
</context-param>

   入學系統要調用接口的方法中,獲取web上下文全局參數,並在方法中實現http請求,獲得接口返回的參數,示例:

//sturts獲取servletContext對象
ServletContext context = ServletActionContext.getServletContext();
//獲取web.xml中全局參數
String teacherInterface = context.getInitParameter("teacherInterface");
//通過java.net.url和java.net.urlConnection模擬http的post請求
result = doPOST(teacherInterface,params);

  使用POST方法讀取HTTP中的數據

 public static String doPOST(String urlAddress, String params) {
       try {
           // 創建URL對象
           URL url = new URL(urlAddress);
           // 打開連接 獲取連接對象
           URLConnection connection = url.openConnection();
           // 設置請求編碼
           connection.addRequestProperty("encoding", "GBK");
           // 設置允許輸入
           connection.setDoInput(true);
           // 設置允許輸出
           connection.setDoOutput(true);

           // 從連接對象中獲取輸出字節流對象
           OutputStream outputStream = connection.getOutputStream();
           // 將輸出的字節流對象包裝成字符流寫出對象
           OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
           // 創建一個輸出緩沖區對象,將要輸出的字符流寫出對象傳入
           BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
           // 向輸出緩沖區中寫入請求參數
           if(params != null){
        	   bufferedWriter.write(params);
           }
           // 刷新輸出緩沖區
           bufferedWriter.flush();

           // 從連接對象中獲取輸入字節流對象
           InputStream inputStream = connection.getInputStream();
           // 將輸入字節流對象包裝成輸入字符流對象,並將字符編碼為GBK格式
           InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "GBK");
           // 創建一個輸入緩沖區對象,將要輸入的字符流對象傳入
           BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

           // 創建一個字符串對象,用來接收每次從輸入緩沖區中讀入的字符串
           String line;
           // 創建一個可變字符串對象,用來裝載緩沖區對象的最終數據,使用字符串追加的方式,將響應的所有數據都保存在該對象中
           StringBuilder stringBuilder = new StringBuilder();
           // 使用循環逐行讀取緩沖區的數據,每次循環讀入一行字符串數據賦值給line字符串變量,直到讀取的行為空時標識內容讀取結束循環
           while ((line = bufferedReader.readLine()) != null) {
               // 將緩沖區讀取到的數據追加到可變字符對象中
               stringBuilder.append(line);
           }
           // 依次關閉打開的輸入流
           bufferedReader.close();
           inputStreamReader.close();
           inputStream.close();
           // 依次關閉打開的輸出流
           bufferedWriter.close();
           outputStreamWriter.close();
           outputStream.close();
           // 將可變字符串轉換成String對象返回
           return stringBuilder.toString();

       } catch (IOException e) {
           e.printStackTrace();
       }
       return null;
   }

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM