Java調用第三方接口工具類(json、form)


 

1、JSON值訪問

/**
 * 調用對方接口方法
 * @param path 對方或第三方提供的路徑
 * @param data 向對方或第三方發送的數據,大多數情況下給對方發送JSON數據讓對方解析
 */
public static void interfaceUtil(String path,String data) {
    try {
        URL url = new URL(path);
        //打開和url之間的連接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //設置請求的方法類型
        conn.setRequestMethod("POST");
        //設置請求的內容類型
        conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
        //設置發送數據
        conn.setDoOutput(true);
        //設置接受數據
        conn.setDoInput(true);
        //發送數據,使用輸出流
        OutputStream outputStream = conn.getOutputStream();
        outputStream.write(data.getBytes("UTF-8"));
        //獲取URLConnection對象對應的輸入流
        InputStream is = conn.getInputStream();
        
        //構造一個字符流緩存
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String str = "";
        while ((str = br.readLine()) != null) {
            System.out.println(str);
        }
        String response = byteArrayOutputStream.toString();
        System.out.println(response);
        //關閉流
        is.close();
        //斷開連接,最好寫上,disconnect是在底層tcp socket鏈接空閑時才切斷。如果正在被其他線程使用就不切斷。
        //固定多線程的話,如果不disconnect,鏈接會增多,直到收發不出信息。寫上disconnect后正常一些。
        conn.disconnect();
        System.out.println("完整結束");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

 

2、form表單形式提交key-value值訪問

 

key-value值放進一個Map中

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;

/**
 * 調用對方接口方法
 * @author wxd
 */
public class InterfaceUtil {

    private static final Logger logger = Logger.getLogger(InterfaceUtil.class);
    
    private static final int REQUEST_SUCCESS = 200;
    
    /**
     * 調用對方接口方法
     * @param path 對方或第三方提供的路徑
     * @param data 向對方或第三方發送的數據,大多數情況下給對方發送JSON數據讓對方解析
     */
    public static void postRequest(String path, Map<String,String> params) {
        OutputStream outputStream = null;
        InputStream is = null;
        HttpURLConnection conn = null;
        URL url = null;
        try {
            // 拼接請求參數  
            StringBuffer sb = new StringBuffer(); 
            String sbRlt = null;
            if (params != null) {  
                for (Entry<String, String> e : params.entrySet()) {  
                    sb.append(e.getKey());  
                    sb.append("=");  
                    sb.append(e.getValue());  
                    sb.append("&");  
                }  
                sbRlt = sb.substring(0, sb.length() - 1);  
            }  
            url = new URL(path);
            //打開和url之間的連接
            conn = (HttpURLConnection) url.openConnection();
            
            //設置請求的方法類型
            conn.setRequestMethod("POST");
            //設置請求的內容類型
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
            //設置發送數據
            conn.setDoOutput(true);
            //設置接受數據
            conn.setDoInput(true);
            //發送數據,使用輸出流
            outputStream = conn.getOutputStream();
            outputStream.write(sbRlt.getBytes("UTF-8"));
            //獲取URLConnection對象對應的輸入流
            is = conn.getInputStream();
            if(conn.getResponseCode() == REQUEST_SUCCESS) {
                //構造一個字符流緩存
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String str = "";
                while ((str = br.readLine()) != null) {
                    logger.info(str);
                    System.out.println(str);
                }
            }else {
                logger.error("訪問失敗");
                System.out.println("訪問失敗");
            }
        } catch (Exception e) {
            logger.error("訪問失敗");
            e.printStackTrace();
        } finally {
            if(is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                conn.disconnect();
            }
        }
    }
    
}

 


免責聲明!

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



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