2014-06-05 10 views
15

Ho un comando curl per usareUtilizzando il comando curl in java

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

nessuno può dire il codice Java equivalente per il comando ricciolo sopra.

Grazie in anticipo

+1

Date un'occhiata a 'http: // docs.oracle.com/JavaSE/7/docs/api/java/lang/ProcessBuilder.html' oppure prendi un [qui] (http://curl.haxx.se/libcurl/java/) – Jens

+0

Ci sono molti modi per inviare HTTP Post con Java, ma solo google, ecco una delle risposte SO: http://stackoverflow.com/questions/4205980/java-sending-http-parameters-via-post-method-easily – udalmik

risposta

11

Ecco un esempio di spettacolo ProcessBuilder che esegue ricciolo. Queste sezioni di codice funzionano bene nel mio ambiente. In realtà, lo eseguirai senza problemi. Il programma ottiene l'immagine dal web e salva come un file jpg. Il file jpg viene salvato nel percorso "/ home/nome_utente/immagini".

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

} 
} 

Per le vostre domande. È il modo più diretto ed intuitivo per mappare il codice da curl a Java, quando si utilizza il processbuilder . Basta scrivere come quella:

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

diventano

ProcessBuilder pb = new ProcessBuilder("-s","-d user.name=xxxx ","-d `file=yyyy","-d rg=-v" ,"htttp://localhost:zzzz/templeton/v1/pig");`