簡體   English   中英

Java:使用HTTP Post中的其他參數發送byte []

[英]Java: Sending byte[] with other parameters in HTTP Post

我正在為最近公開的非官方Snapchat API開發Java客戶端庫。 順便說一句,到目前為止,我的庫的GitHub在這里: https : //github.com/hatboysam/JavaSnap

我的大多數請求都能正常工作,可以登錄,下載圖像等。到目前為止,我對所有這些請求都使用UniRest,因為我喜歡API的簡單性。

我正在嘗試按照此處概述的格式上傳媒體: http : //gibsonsec.org/snapchat/fulldisclosure/#uploading-and-sending-snaps-phupload-phsend

我沒有問題產生任何領域。 數據是我從文件中讀取並通過指定的加密算法運行的AES-ECB加密數據的byte[]

我已經嘗試了幾件事:

  • 使用UniRest的.field .field(String name, File file)方法將文件添加為參數。 我使用從byte[]創建的臨時Dile。 這使我從服務器獲得401 UNAUTHORIZED UNAUTHORIZED,所以我認為UniRest在添加一些我不想要的標頭。

  • 使用具有UTF-8編碼的String(byte[] bytes, String encoding)構造函數將byte[]序列化為String 這給我一個500 SERVER ERROR

  • 根本不發送data字段,只是看會發生什么。 這給我一個400 BAD REQUEST

如果您查看Python庫pysnap (init.py“> https://github.com/martinp/pysnap/blob/master/pysnap/ init .py)中的upload方法,則可以看到我正在嘗試執行的操作之前,我們已經非常簡單地使用Python的requests庫完成了操作。我不知道如何在Java中獲得相同的行為。

我的理解是,您需要使用base-64編碼將byte[]數據編碼為字符串。 嘗試使用javax.xml.bind.DatatypeConverter.printBase64Binary或base-64的第三方庫。

使用String(byte[] bytes, String encoding)轉換為字符串是完全不同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM