Как получить полный файл из почтового вложения в Java, чтобы отправить его через другой вход API? - PullRequest
0 голосов
/ 11 июня 2018

Я создаю приложение, в котором мне нужно прикрепить файл по почте, а затем отправить этот полный файл в качестве ввода другого API портала, называемого «асана».Я не хочу сохранять / скачивать файл локально.

Я отправил этот сайт , чтобы получить прикрепленный файл по почте.Но мне нужно отправить файл в API asana, не загружая его.Вот код API asana для отправки файла через API.

String url = "https://app.asana.com/api/1.0/tasks/"+asanaActivitiesDto.getTaskId()+"/attachments";
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            post.setHeader("Authorization", "Bearer " + asanaActivitiesDto.getBearerToken());

            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.addTextBody("task", jsonInput.get("taskId").toString(), ContentType.TEXT_PLAIN);
            // now here I actually want file from attachment of the mail
           // currently taking file from local for testing
            File f = new File(asanaActivitiesDto.getFile());
            builder.addBinaryBody(
                "file",
                //Here, as a second input, I need to set file from the 
                //attachment of the mail
                new FileInputStream(f),
                ContentType.APPLICATION_OCTET_STREAM,
                f.getName()
            );
            HttpEntity multipart = builder.build();
            post.setEntity(multipart);
            HttpResponse response = client.execute(post);
            HttpEntity responseEntity = response.getEntity();

            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Post parameters : " + post.getEntity());
            System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
            BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            StringBuffer result = new StringBuffer();
            String line = "";
            while ((line = rd.readLine()) != null) {
                result.append(line);
            }
            System.out.println(result.toString());
            JSONParser parser = new JSONParser();
            jsonOutput = (JSONObject) parser.parse(result.toString());

вместо new FileInputStream (f) , мне нужно отправить файл, прикрепленный к этому письму.Каковы возможные способы сделать то же самое?

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете просто прочитать данные во вложении электронной почты как InputStream.Попробуйте что-то вроде:

        mbp = // the MimeBodyPart containing the attachment
        builder.addBinaryBody(
            "file",
            mbp.getInputStream(),
            ContentType.APPLICATION_OCTET_STREAM,
            mbp.getFileName()
        );
...