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,這也是默認值)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章