2014-06-05 16 views
15

Ich habe einen curl BefehlMit curl Befehl in Java

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

für den oben curl entsprechenden Befehl Java-Code jemand sagen.

Vielen Dank im Voraus

+1

einen Blick auf 'http werden: // docs.oracle.com/JavaSE/7/docs/api/java/lang/ProcessBuilder.html' oder nimm ein [hier] (http://curl.haxx.se/libcurl/java/) – Jens

+0

Es gibt viele Möglichkeiten, HTTP Post mit Java zu senden, google es einfach, hier ist eine von SO Antworten: http://stackoverflow.com/questions/4205980/java-sending-http-parameters-via-post-method-easily – udalmik

Antwort

11

Hier ein Beispiel zeigen Process die curl ausführt. Dieser Codeabschnitt funktioniert in meiner Umgebung einwandfrei. Eigentlich werden Sie es ohne Probleme ausführen. Das Programm erhält das Bild aus dem Internet und speichert es als JPG-Datei. Die JPG-Datei wird unter dem Pfad "/ home/your_user_name/Pictures" gespeichert.

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

} 
} 

Für Ihre Fragen. Es ist am direktesten und intuitivsten, um curl Java-Code zuzuordnen, wenn Processbuilder verwendet wird. Schreiben Sie einfach so, dass:

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

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