寻找一种简单的方法来在 java 中复制以下 Linux cUrl 命令:
我需要通过 HTTP/Curl 将文件“/home/myNewFile.txt”上传到 Http 服务器(在本例中是 Artifactory 或)
curl -u myUser:myP455w0rd! -X PUT“http://localhost:8081/artifactory/my-repository/my/new/artifact/directory/file.txt” -T/home/myNewFile.txt
提前致谢!
最佳答案
首先,将 URLConnection 转换为 HttpURLConnection。
- 对于curl的-X选项,请使用setRequestMethod .
- 对于curl的-T选项,请使用setDoOutput(true) , getOutputStream() ,和Files.copy .
- 对于curl的-u选项,设置
授权
request header到“Basic”
(包括空格),后跟 base 64 encoded形式为用户+“:”+密码
。这是 RFC 2616: HTTP 1.1 中描述的基本身份验证方案规范和RFC 2617: HTTP Authentication .
总而言之,代码如下所示:
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 放入 Java 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42259075/