2014-06-05 13 views
15

mam polecenie curl używaćKorzystanie curl polecenie java

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

Czy ktoś może powiedzieć równoważny kod Java dla powyższego polecenia curl.

góry dzięki

+1

Spójrz na 'http: // docs.oracle.com/JavaSE/7/docs/api/java/lang/ProcessBuilder.html' lub wziąć [tutaj] (http://curl.haxx.se/libcurl/java/) – Jens

+0

Istnieje wiele sposobów na wysłanie postu HTTP z Javą, wystarczy google, tutaj jest jedna z odpowiedzi na SO: http://stackoverflow.com/questions/4205980/java-sending-http-parameters-via-post-method-easily – udalmik

Odpowiedz

11

Tutaj przykład pokaz Processbuilder że wykonuje zawinięte. Ta sekcja kodu działa dobrze w moim środowisku. Właściwie wykonasz go bez żadnych problemów. Program pobiera obraz z sieci i zapisuje jako plik jpg. Plik jpg jest zapisywany w ścieżce "/ home/twoja_nazwa_użytkownika/Obrazki".

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

} 
} 

W razie pytań. Jest to najbardziej bezpośrednio i intuicyjnie odwzorowanie curl na kod Java, gdy używa się Processbuilder. Wystarczy napisać jak:

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

stać

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