如何卷曲将在Java中(How to cURL Put in Java)

2019-09-28 12:46发布

寻找一种简单的方法在Java中复制以下Linux curl命令:

我需要通过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

提前致谢!

Answer 1:

首先,投你的URLConnection一个HttpURLConnection类。

  • 对于卷曲的-X选项,使用setRequestMethod 。
  • 对于卷曲的-t选项,使用setDoOutput(真) , 的getOutputStream() ,和Files.copy 。
  • 对于卷曲的-u选项,设置Authorization 请求头以"Basic "其次是(包括空间) 基64编码的形式user + ":" + password 。 这是基本认证方案中所描述的HTTP 1.1:RFC 2616规范和RFC 2617:HTTP认证 。

综上所述,代码是这样的:

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


Answer 2:

我不主张,这是做事的正确方法,但由于是直接从你的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



文章来源: How to cURL Put in Java