2017-02-15 72 views
0

尋找一種簡單的方法來複制Java中的以下Linux curl命令:如何捲曲將在Java中

我需要通過HTTP上傳文件「/home/myNewFile.txt」 /捲曲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文件執行命令行語句。

下面是我編寫的一個程序代碼片斷,該代碼從我寫的一個java程序內執行php腳本(使用linux命令行語句)。

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

謝謝你。問題是我需要保持它獨立於操作系統(我沒有投票你btw) –

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