1

添付ファイルを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}

    }
}
4

2 に答える 2