[英]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.