添付ファイルをzendeskにアップロードしようとしています。APIドキュメントから使用する必要があります
curl -u username:password -H "Content-Type: application/binary" \
--data-binary @file.dat -X POST \
"https://helpdesk.zendesk.com/api/v2/uploads.json?filename=myfile.dat&token= {optional_token}"
私はJavaで同じことをしようとしています。ファイルをアップロードして、正しいjson応答を受け取ることができます。ただし、zendeskサーバーでファイルを開くと、ファイルが認識されません。コマンドラインからcurlを使用して同じファイルをアップロードすると、すべて正常に機能します。私はここで何が間違っているのですか?これは、ファイルのアップロードに使用するJavaコードです。
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\user\\Documents\\zendesk2\\Zendesk\\src\\main\\resources\\scrat.jpg");
try {
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("filename", new StringBody(file.getName()));
FileBody fileBody = new FileBody(file, "application/octet-stream");
multipartEntity.addPart("attachment", fileBody);
// -u admin:password
Credentials credentials = new UsernamePasswordCredentials("username", "passw");
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, credentials);
// -X POST
HttpPost httpPost = new HttpPost("https://testserver.zendesk.com/api/v2/uploads.json");
// @ - absolute path
httpPost.setEntity(multipartEntity);
// process response
HttpResponse response = httpClient.execute(httpPost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
long len = resEntity.getContentLength();
if (len != -1 && len < 2048) {
// this result is being parsed with gson....
System.out.println(EntityUtils.toString(resEntity));
} else {
// Stream content out
}
}
httpClient.getConnectionManager().shutdown();
} catch (Exception e) {
//-f, fail silently}
}
}