我正在使用Snapchat API来制作Java客户端。我正在使用一个端点,它从HTTP POST
:
{
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?或者,我如何窥探自己的网络流量,以查看每个网络流量的代码差异?对我来说似乎很疯狂,一个有效,另一个没有。
答案 0 :(得分:1)
尝试链接方法,即
req = Unirest.post(path).fields(params).field("data", f);
或更改行:
req = req.fields(params);
req = req.field("data", f);