【问题标题】:How can I make this CURL call in Java? [duplicate]如何在 Java 中进行此 CURL 调用? [复制]
【发布时间】:2019-09-27 09:13:04
【问题描述】:

我正在尝试将此 CURL 转换为 Java。我很难过,尤其是分段上传。

curl -X POST \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer ${AUTH_TOKEN}" \
-F attached_file=@test.png \
-F from_comment=False \
-F object_id=1 \
-F project=1 \
-s http://localhost:8000/api/v1/tasks/attachments

【问题讨论】:

标签: java multipartform-data


【解决方案1】:

JavaMailMimeMultipartMimeBodyPart 类:

MimeBodyPart attachedFile = new MimeBodyPart();
attachedFile.setDisposition("form-data; name=\"attached_file\"");
attachedFile.attachFile("test.png");

MimeBodyPart fromComment = new MimeBodyPart();
fromComment.setDisposition("form-data; name=\"from_comment\"");
fromComment.setText("False");

MimeBodyPart objectID = new MimeBodyPart();
objectID.setDisposition("form-data; name=\"object_id\"");
objectID.setText("1");

MimeBodyPart project = new MimeBodyPart();
project.setDisposition("form-data; name=\"project\"");
project.setText("1");

MimeMultipart multipart = new MimeMultipart("form-data",
    attachedFile, fromComment, objectID, project);

URL url = new URL("http://localhost:8000/api/v1/tasks/attachments");
HttpURLConnection connection = (HttpURLConnection) url.getConnection();

connection.setRequestProperty("Content-Type", "multipart/form-data");
connection.setRequestProperty("Authorization", "Bearer " + authToken);

connection.setRequestMethod("POST");
connection.setDoOutput(true);

try (OutputStream body = connection.getOutputStream()) {
    multipart.writeTo(body);
}

int responseCode = connection.getResposneCode();
if (responseCode >= 400 || responseCode < 0) {
    System.err.println("Response returned HTTP " + responseCode);

    InputStream response = connection.getErrorStream();
    if (response != null) {
        response.transferTo(System.err);
        response.close();
    }
}

【讨论】:

  • JavaMail 用于处理电子邮件,不用于上传文件。
  • @MarkRotteveel JavaMail 还包含 MIME 内容的完整实现。
  • 是的,它适用于为邮件相关协议传输数据。将它用于 http 可能是可能的,但它很笨重并且可能效率低下。最好使用专门的 HTTP 库。
猜你喜欢
  • 2016-10-11
  • 1970-01-01
  • 2015-04-29
  • 2021-12-26
  • 1970-01-01
  • 2011-12-17
  • 2013-08-30
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多