我正在使用Snapchat API來創建Java客戶端。我使用的端點,其從HTTP POST
採用以下參數:將Python請求代碼轉換爲Java(UniRest)
{
username: snapchat username,
timestamp: UNIX timestamp,
media_id: random string,
type: 0,
req_token: request token,
data: encrypted data
}
我沒有問題產生params哈希表,和我有data
作爲File
對象。
在Python我已經證實了以下工作:
f = open('encrypted.jpg')
params = { ... all params besides data ... }
files = { 'data' : f }
r = requests.post(path, params, files=files)
這Python的代碼我200我使用的Java代碼生成的令牌和數據/文件,所以發送的數據是相同的。
在Java中我做與UniRest如下:
Map<String, Object> params = ... same params ...;
File f = new File('encrypted.jpg');
HttpRequestWithBody req = Unirest.post(path);
req.fields(params);
req.field("data", f);
HttpResponse<String> resp = req.asString();
但是這給了我一個來自服務器的響應500。我怎樣才能編寫精確模擬Python的Java?或者我怎麼能窺探我自己的網絡流量,看看每個代碼在做什麼的區別?對我來說似乎很瘋狂,一個人工作,另一個不工作。
應該就是讀'req.field( 「數據」 中,f);'? – PaulMcG
對不起,已更新以糾正該錯字。 –
嘗試鏈方法,即req = Unirest.post(path).fields(params).field(「data」,f),或更改行:req = req.fields(params); req = req.field(「data」,f); – Marat