Java生成二進制文件與Postman以二進制流的形式發送請求


業務描述:

模擬終端(智能家居)發送HTTP POST請求,請求參數為二進制流;而且,二進制流是加密后的數據,因此調試分兩步:

1、Java代碼生成加密后數據,並保存為二進制流文件 (電腦上的圖片就是二進制流文件,只不過我們打開的時候,借助於電腦軟件渲染為圖片)

上代碼片段:

 1 byte[] oneshotBytes = reqParms.getBytes();
 2 log.info("length----->"+oneshotBytes.length);
 3 //FileWriter fw = new FileWriter(new File("/home/unisound/private_cloud_platform/rtc_demo/req_binary"));
 4 //fw.write(new String(oneshotBytes,"utf-8"));
 5 //fw.flush();
 6 //fw.close();
 7 OutputStream os =  new FileOutputStream(new File("/home/unisound/private_cloud_platform/rtc_demo/req_binary"));
 8 os.write(oneshotBytes);
 9 os.flush();
10 os.close();

代碼很簡單,就是把byte[]保存為文件;

坑點:千萬不要把byte[] 轉換為 String 然后把 String寫入文件;不然你會發現,原本214字節的文件變為252字節或者更大!!!

原因很簡單,二進制流轉換為字符串,這是編碼的過程,編碼就需要選擇字符集(這里是UTF-8),字符集中字符長度和字節長度是不對等的,比如UTF-8中,一個漢字是3個字節,字母數組不編碼仍然是一個字節~!

         簡單說,就是二進制數組byte[] 與  轉換成的String后的XXX.getBytes()長度是不一樣的!!!!

 

2、PostMan發送請求

這個就簡單了,body中選擇binary(二進制流),選中第一步生成的二進制文件...

注意:

header中,不要設置ContentType(一定注意,不要設置ContentType,如果非要設置,請設置為ContentType=text/plain,這也是默認值)

 


免責聲明!

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



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