问题描述
寻找一种简单的方法来在Java中复制以下Linux cUrl命令:
Looking for an easy way to replicate the following Linux cUrl command in java:
我需要通过HTTP/Curl将文件"/home/myNewFile.txt"上传到Http服务器(在这种情况下为人工制品或)
I need to upload the file "/home/myNewFile.txt" via HTTP / Curl to a Http server (which in this case is artifact or)
curl -u myUser:myP455w0rd! -X PUT "http://localhost:8081/artifactory/my-repository/my/new/artifact/directory/file.txt" -T /home/myNewFile.txt
curl -u myUser:myP455w0rd! -X PUT "http://localhost:8081/artifactory/my-repository/my/new/artifact/directory/file.txt" -T /home/myNewFile.txt
提前谢谢!
推荐答案
首先,将URLConnection强制转换为HttpURLConnection.
First, cast your URLConnection to an HttpURLConnection.
- 对于curl的-X选项,请使用 setRequestMethod .
- 对于curl的-T选项,请使用 setDoOutput(true), getOutputStream()和 Files.copy .
- 对于curl的-u选项,设置
Authorization
请求标头到"Basic "
(包括空格),后跟user + ":" + password
的base 64编码形式.这是 RFC 2616:HTTP 1.1 规范和 RFC 2617:HTTP身份验证.
- For curl’s -X option, use setRequestMethod.
- For curl’s -T option, use setDoOutput(true), getOutputStream(), and Files.copy.
- For curl’s -u option, set the
Authorization
request header to"Basic "
(including the space) followed by the base 64 encoded form ofuser + ":" + password
. This is the Basic Authentication Scheme described in the RFC 2616: HTTP 1.1 specification and RFC 2617: HTTP Authentication.
总而言之,代码如下所示:
In summary, the code would look like this:
URL url = new URL("http://localhost:8081/artifactory/my-repository/my/new/artifact/directory/file.txt");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String auth = user + ":" + password;
conn.setRequestProperty("Authorization", "Basic " +
Base64.getEncoder().encodeToString(
auth.getBytes(StandardCharsets.UTF_8)));
conn.setRequestMethod("PUT");
conn.setDoOutput(true);
try (OutputStream out = conn.getOutputStream()) {
Files.copy(Paths.get("/home/myNewFile.txt"), out));
}
这篇关于如何在Java中使用cURL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!