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
params ハッシュの生成に問題はなく、オブジェクトとして持ってい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 を作成するにはどうすればよいですか? または、自分のネットワーク トラフィックをスヌープして、それぞれのコードの動作の違いを確認するにはどうすればよいでしょうか? 一方が機能し、もう一方が機能しないというのは、私にはおかしいようです。