2017-02-15 2 views
0

Ищете простой способ повторить следующую команду Linux Curl в Java:Как завить Помещенный в Java

Мне нужно, чтобы загрузить файл «/home/myNewFile.txt» с помощью HTTP/Curl на сервер Http (который в данном случае является артефактом или)

curl -u myUser:myP455w0rd! -X PUT "http://localhost:8081/artifactory/my-repository/my/new/artifact/directory/file.txt" -T /home/myNewFile.txt

Спасибо заранее!

+0

Пытались ли вы что-нибудь? Вы когда-нибудь использовали класс java.net.HttpURLConnection? – VGR

+0

попытался использовать java.net.URL/URLConnection, но я не совсем уверен, как перевести аргументы вроде-u, -X, -T –

+0

У Artifactory есть java-клиент, который может быть вам полезен взгляните на: https://github.com/JFrogDev/artifactory-client-java –

ответ

-1

Я не сторонник того, что это правильный способ сделать что-то, но вы можете выполнить оператор командной строки, как непосредственно из вашего java-файла.

Вот фрагмент кода из программы, которую я написал, которая выполняет скрипт php (используя оператор командной строки linux) из java-программы, которую я написал.

public void executeCommand(String command) 
{ 
    if(command.equals("send_SMS")) 
    { 
     try 
     { 
      //execute PHP script that calls Twilio.com to sent SMS text message. 
      Process process = Runtime.getRuntime().exec("php send-sms.php\n"); 
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

Это сработало для меня.

ЗАКАНЧИВАТЬ API для процесса и классов среды выполнения здесь:

https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

и

https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

+0

Хорошо, действительно ?? Анонимный голос? Кто-то попросил о помощи, и я дал один возможный и действительный ответ. – mike

+1

Возможно, это связано с тем, что ваш ответ очень удаленно связан с вопросом OP. Возможно, вы дали ответ для другого? – DaSourcerer

+0

Спасибо за это. проблема в том, что мне нужно будет поддерживать его независимым от ОС (я не проголосовал за вас, кстати) –

1

Во-первых, отдать свой URLConnection к HttpURLConnection.

Таким образом, код будет выглядеть следующим образом:

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)); 
}