1. 程式人生 > >java 接口調用

java 接口調用

adl finall .get ioe 輸入 all catch http last

生產中遇到過這種問題,記錄下java的接口調用問題。

一種是json方式;

 public static String sendPost(String url, JSONObject obj)throws IOException{
                   OutputStreamWriter out = null;
                   BufferedReader reader = null;
                   String response="";
                   
/*                   String paramStr = "";
                if (null != param) { //遍歷參數Map添加到集合中
                    Set<String> keySet = param.keySet();
                    for (String key : keySet) {
                        paramStr = paramStr + key + ":" + param.get(key) + "&";
                    }
                }
                int lastAndIndex = paramStr.lastIndexOf("&");
                if (lastAndIndex != -1) {
                    paramStr = paramStr.substring(0, lastAndIndex);
                }
                
                System.out.println("地址===" + url);
                System.out.println("入參===" + paramStr);
*/ try { URL httpUrl = null; //HTTP URL類 用這個類來創建連接 //創建URL httpUrl = new URL(url); //建立連接 HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestProperty(
"accept", "*/*");// 設置通用的請求屬性 conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("connection", "keep-alive"); conn.setUseCaches(
false);//設置不要緩存 conn.setInstanceFollowRedirects(true); conn.setDoOutput(true); conn.setDoInput(true); conn.connect(); //POST請求 out = new OutputStreamWriter( conn.getOutputStream()); out.write(obj.toJSONString()); out.flush(); //讀取響應 reader = new BufferedReader(new InputStreamReader( conn.getInputStream())); String lines; while ((lines = reader.readLine()) != null) { lines = new String(lines.getBytes(), "utf-8"); response+=lines; } reader.close(); // 斷開連接 conn.disconnect(); } catch (Exception e) { System.out.println("發送 POST 請求出現異常!"+e); e.printStackTrace(); } //使用finally塊來關閉輸出流、輸入流 finally{ try{ if(out!=null){ out.close(); } if(reader!=null){ reader.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return response; }

再來一個普通的str 調用接口;

    /**
     * 向指定 URL 發送POST方法的請求
     * @param url 發送請求的 URL
     * @param param 請求參數,請求參數應該是 name1=value1&name2=value2 的形式。
     * @return 所代表遠程資源的響應結果
     */
    public static String sendPostWebReq(String url, Map<String, Object> param,int i) throws Exception {
        String paramStr = "";
        if (null != param) { //遍歷參數Map添加到集合中
            Set<String> keySet = param.keySet();
            for (String key : keySet) {
                paramStr = paramStr + key + "=" + param.get(key) + "&";
            }
        }
        int lastAndIndex = paramStr.lastIndexOf("&");
        if (lastAndIndex != -1) {
            paramStr = paramStr.substring(0, lastAndIndex);
        }
        
        System.out.println("地址===" + url);
        System.out.println("入參===" + paramStr);
        
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();// 打開和URL之間的連接
            conn.setRequestProperty("accept", "*/*");// 設置通用的請求屬性
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Charset", "UTF-8");
            conn.setDoOutput(true);// 發送POST請求必須設置如下兩行
            conn.setDoInput(true);// 獲取URLConnection對象對應的輸出流
            out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));// 發送請求參數
            out.print(paramStr);// flush輸出流的緩沖
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));// 定義BufferedReader輸入流來讀取URL的響應
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("發送 POST 請求出現異常!" + e);
            throw e;
        } finally { // 使用finally塊來關閉輸出流、輸入流
            try {
                if (in != null) in.close();
            } catch (IOException ex) { }
            if (out != null) out.close();
        }
        return result;
    }

java 接口調用