java - 将 Python 请求代码翻译成 Java (UniRest)

标签 java python http post unirest

我正在使用 Snapchat API 制作 Java 客户端。我正在使用一个从 HTTP POST 获取以下参数的端点:

{
username: snapchat username,
timestamp: UNIX timestamp,
media_id: random string,
type: 0,
req_token: request token,
data: encrypted data
}

我在生成参数哈希时没有问题,而且我将 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 代码生成的 token 和数据/文件,所以发送的数据是相同的。

在 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 = Unirest.post(path).fields(params).field("data", f);

或更改行:

req = req.fields(params); 
req = req.field("data", f);

关于java - 将 Python 请求代码翻译成 Java (UniRest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20944570/

相关文章:

web-services - 在 Safari 中获取自定义 header 的问题

http - 启用 LDAP over SSL 和 HTTP over SSL 是否需要两个证书?

unit-testing - 如何使用 ` func(w http.ResponseWriter, r *http.Request) `进行模拟测试

Java 转换器错误 : Could not compile stylesheet

java - 构造函数 WindowEvent(WelcomeWindow, int) 未定义

java - 从 'remote' 异常中的通用异常链工具中排除

python - 了解Python中的config文件夹路径

python - 将脚本的输出写入文件时遇到问题

java.lang.InternalError 安卓

python - django.db.utils.NotSupportedError : PostgreSQL 12 or later is required (found 11. 19)