Java模擬POST請求發送二進制數據


在進行程序之間數據通信時我們有時候就需要自定義二進制格式,然后通過HTTP進行二進制數據交互。交互的示例代碼如下:

public static void main(String[] args) {
    String result = "";
    try {
        String url = "http://localhost:8080/Demo/SiteApi";
        URL realUrl = new URL(url);
        // 打開和URL之間的連接
        URLConnection conn = realUrl.openConnection();
        // 設置通用的請求屬性
        conn.setRequestProperty("accept", "*/*");
        conn.setRequestProperty("connection", "Keep-Alive");
        conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        conn.setRequestProperty("Content-Type", "application/octet-stream");
        // 發送POST請求必須設置如下兩行
        conn.setDoOutput(true);
        conn.setDoInput(true);        
        
        // 發送請求參數
        DataOutputStream dos=new DataOutputStream(conn.getOutputStream());
        String content="I love china";
        dos.write(content.getBytes());        
        
        // flush輸出流的緩沖
        dos.flush();
        // 定義BufferedReader輸入流來讀取URL的響應
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = in.readLine()) != null) {
            result += line;
        }
        System.out.println(result);//打印輸出結果
    } catch (Exception e) {
        System.out.println("異常," + e.getMessage());
        e.printStackTrace();
    }
}

上面是模擬的http請求,如果是https請求,並且我們自己搭建的https可能證書不合法,因此需要在請求前加上下面的代碼:

javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier()  
{        
    public boolean verify(String arg0, SSLSession arg1) {
        if (arg0.equals("119.84.112.220")) {
            return true;
        }
        return false;
    }  
});

 

上面的IP地址就是請求的ip地址。

 

說一下重點吧:
1.設置Content-Type的值必須為application/octet-stream,可參考http://tool.oschina.net/commons/
2.發送二進制數據必須使用到DataOutputStream


免責聲明!

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



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