1. 程式人生 > >java如何呼叫介面方式一

java如何呼叫介面方式一

原文地址:http://www.cnblogs.com/angusbao/p/7677621.html

  其實對於java呼叫介面進行獲取對方伺服器的資料在開發中特別常見,然而一些常用的基礎的知識總是掌握不牢,讓人容易忘記,寫下來閒的時候看看,比回想總會好一些。

  總體而言,一些東西知識點一直複製貼上容易依賴,重要的是會忘記為什麼這麼寫,只有理解到位,或者八九不離十才可以對於隨時變化的情況進行分析,如果到家,還可以對別人或自己的進行優化。
  如果你在這篇沒有找到你想要的,請點選:java如何呼叫介面方式二

  而對於一些知識點呢,對其進行整理和歸納,這樣容易進行對比加深記憶,對下面程式碼和總結進行對比著看。

  1. 首先URL restURL = new URL(url);這其中的url就是需要調的目標介面地址,URL類是java.net.*下的類,這個不陌生。
  2. setRequestMethod("POST");請求方式是有兩個值進行選擇,一個是GET,一個是POST,選擇對應的請求方式
  3. setDoOutput(true);setDoInput(true);
    setDoInput()  :  // 設定是否向httpUrlConnection輸出,因為這個是post請求,引數要放在http正文內,因此需要設為true, 預設是false;   
    setDoOutput():   // 設定是否從httpUrlConnection讀入,預設情況下是true; 
  4. setAllowUserInteraction();allowUserInteraction 如果為 true,則在允許使用者互動(例如彈出一個驗證對話方塊)的上下文中對此 URL 進行檢查。
  5. 下面程式碼的query是以  屬性=值  傳輸的,若是多個則是 屬性=值&屬性=值 這種形式傳遞的,傳遞給伺服器,讓伺服器自己去處理。
    如何去生成這種形式的呢?最簡單最快的方式在這裡 Java將Map拼接成“引數=值&引數=值”
  6. close();建立流進行寫入或讀取返回值,建立用完後記得關閉流。
  7. 有事需要生成時間戳,可以參考
    java時間類各種方法及用法
    ,這個裡面介紹了各種時間方法獲取想要的時間戳

  java如何呼叫呢?

 

複製程式碼

package com.c;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class RestUtil {

    public String load(String url,String query) throws Exception
    {
        URL restURL = new URL(url);
        /*
         * 此處的urlConnection物件實際上是根據URL的請求協議(此處是http)生成的URLConnection類 的子類HttpURLConnection
         */
        HttpURLConnection conn = (HttpURLConnection) restURL.openConnection();
        //請求方式
        conn.setRequestMethod("POST");
        //設定是否從httpUrlConnection讀入,預設情況下是true; httpUrlConnection.setDoInput(true);
        conn.setDoOutput(true);
        //allowUserInteraction 如果為 true,則在允許使用者互動(例如彈出一個驗證對話方塊)的上下文中對此 URL 進行檢查。
        conn.setAllowUserInteraction(false);

        PrintStream ps = new PrintStream(conn.getOutputStream());
        ps.print(query);

        ps.close();

        BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

        String line,resultStr="";

        while(null != (line=bReader.readLine()))
        {
        resultStr +=line;
        }
        System.out.println("3412412---"+resultStr);
        bReader.close();

        return resultStr;

    }
     
    public static void main(String []args) {try {

            RestUtil restUtil = new RestUtil();

            String resultString = restUtil.load(
                    "http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday",
                    "floor=first&year=2017&month=9&isLeader=N");

            } catch (Exception e) {

            // TODO: handle exception

            System.out.print(e.getMessage());

            }

        }
}

複製程式碼