松弛API:要上传到松弛通道的文件

时间:2020-09-11 05:15:47

标签: java post http-post slack multipartentity

我正在尝试将自动化套件中的图像发布到备用频道。
命中网址:https://slack.com/api/files.upload
正文是表单数据类型,并且具有

  • 文件-图片文件上传
  • initial_comment-一些字符串
  • channels-要发布的松弛频道。

我尝试在HttpPost中使用MultipartEntity类

MultipartEntity multiPartEntity = new MultipartEntity();

FileBody fileBody = new FileBody(file);
//Prepare payload
multiPartEntity.addPart("file", fileBody);
multiPartEntity.addPart("file_type", new StringBody("JPG"));
multiPartEntity.addPart("initial_comment", new StringBody("cat shakes"));
multiPartEntity.addPart("channels", new StringBody("bot-e2e-report"));

//Set to request body
postRequest.setEntity(multiPartEntity);

我从http帖子获得成功回复。但图片未发布在松弛的频道中。有帮助!

1 个答案:

答案 0 :(得分:0)

问题出在标题上。实际上,即使是错误的标头,此松弛API也会给出200个响应。工作代码:

        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            //Set various attributes
            MultipartEntityBuilder entitybuilder = MultipartEntityBuilder.create();

            entitybuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
            entitybuilder.addBinaryBody("file", file);
            entitybuilder.addTextBody("initial_comment", "cat");
            entitybuilder.addTextBody("channels","bot-e2e-report");
            HttpEntity mutiPartHttpEntity = entitybuilder.build();
            RequestBuilder reqbuilder = RequestBuilder.post("https://slack.com/api/files.upload");
            reqbuilder.setEntity(mutiPartHttpEntity);

            //set Header
            reqbuilder.addHeader("Authorization", "Bearer xoxb-16316687382-1220823299362-fdkBklPrY7rc72bQk3WSOSjD");

            HttpUriRequest multipartRequest = reqbuilder.build();
            // call post
            HttpResponse response = httpclient.execute(multipartRequest);
            // Parse the response
            HttpEntity entity = response.getEntity();
            String json = EntityUtils.toString(entity, StandardCharsets.UTF_8);
            System.out.println(json);