Looking for an easy way to replicate the following Linux cUrl command in java:
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
Thanks in advance!
解决方案
First, cast your URLConnection to an HttpURLConnection.
For curl’s -X option, use setRequestMethod.
For curl’s -u option, set the Authorization request header to "Basic " (including the space) followed by the base 64 encoded form of user + ":" + 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));
}