Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using curl command in java

Tags:

java

curl

I have a curl command to use

curl -s -d user.name=xxxx \
       -d file=yyyy \
       -d arg=-v \
       'http://localhost:zzzz/templeton/v1/pig'

Can anybody tell equivalent java code for the above curl command.

Thanks in advance

like image 412
Reddevil Avatar asked Jun 05 '14 06:06

Reddevil


People also ask

Can we use curl command in Java?

We can execute curl commands from Java by using the ProcessBuilder — a helper class for building instances of the Process class.

What is the use of curl ()?

cURL, which stands for client URL, is a command line tool that developers use to transfer data to and from a server. At the most fundamental, cURL lets you talk to a server by specifying the location (in the form of a URL) and the data you want to send.


1 Answers

Here a example show Processbuilder that executes curl. These section of code work fine in my environment. Actually, you will executes it with no problems. The program obtains the image from web, and save as a jpg file. The jpg file is saved at the path "/home/your_user_name/Pictures".

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

  public class ProcessBuilderTest {

public static void main(String arg[]) throws IOException {

    ProcessBuilder pb = new ProcessBuilder(
            "curl",
            "-s",
            "http://static.tumblr.com/cszmzik/RUTlyrplz/the-simpsons-season-22-episode-13-the-blue-and-the-gray.jpg ");

    pb.directory(new File("/home/your_user_name/Pictures"));
    pb.redirectErrorStream(true);
    Process p = pb.start();
    InputStream is = p.getInputStream();

    FileOutputStream outputStream = new FileOutputStream(
            "/home/your_user_name/Pictures/simpson_download.jpg");

    BufferedInputStream bis = new BufferedInputStream(is);
    byte[] bytes = new byte[100];
    int numberByteReaded;
    while ((numberByteReaded = bis.read(bytes, 0, 100)) != -1) {

        outputStream.write(bytes, 0, numberByteReaded);
        Arrays.fill(bytes, (byte) 0);

    }

    outputStream.flush();
    outputStream.close();

}
 }

For your questions. It is the most directly and intuitively to map curl to Java code, when using Processbuilder. Just write as that:

curl -s -d user.name=xxxx \
-d file=yyyy \
-d arg=-v \
'htttp://localhost:zzzz/templeton/v1/pig'

become

ProcessBuilder pb = new ProcessBuilder("curl", "-s","-d user.name=xxxx ","-d `file=yyyy","-d   rg=-v" ,"htttp://localhost:zzzz/templeton/v1/pig");`
like image 161
3 revs, 3 users 98% Avatar answered Oct 13 '22 18:10

3 revs, 3 users 98%