2015-06-25 11 views
19

Przede wszystkim, ja już widziałem kilka dokumentów, StackOverflow pytania dotyczące samo ..I've moje pytanie konkretnego projektu Kiedy próbuje uruchomić polecenie:curl polecenie java

curl -u username:password https://example.com/xyz/abc 

od mac terminal, dostaję moje pożądane dane formatu json. Ale uruchamiając to samo polecenie z kodu java, pojawia się w konsoli nieautoryzowany błąd 401. Mój kod to:

String username="myusername"; 
    String password="mypassword"; 
    String url="https://www.example.com/xyz/abc"; 
     String[] command = {"curl", "-u" ,"Accept:application/json", username, ":" , password , url}; 
     ProcessBuilder process = new ProcessBuilder(command); 
     Process p; 
     try 
     { 
      p = process.start(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
       StringBuilder builder = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
         builder.append(line); 
         builder.append(System.getProperty("line.separator")); 
       } 
       String result = builder.toString(); 
       System.out.print(result); 

     } 
     catch (IOException e) 
     { System.out.print("error"); 
      e.printStackTrace(); 
     } 

uzyskać Nieautoryzowany 401 błąd i kilka tagów HTML. Wydaje się, że to powtarzające się pytanie, ale próbowałem wszystkich podejść. Wiem, że alternatywa używa metody odpowiedzi http, ale szczególnie chcę używać poleceń curl. Z góry dzięki.

Odpowiedz

12

Spróbuj zmienić tę linię

String[] command = {"curl", "-u" ,"Accept:application/json", username, ":" , password , url}; 

do

String[] command = {"curl", "-H", "Accept:application/json", "-u", username+":"+password , url}; 
+0

Przepraszam. Nie pomogło! –

+0

nie ma problemu, w mojej pierwszej wersji brakowało flagi -H, co powodowało, że składnia zapytania była nieważna –

0

hej spróbować miałem ten sam problem. Zadziałało w moim terminalu, który miał taki sam błąd jak twój.

String[] command = {"curl", "-u" , username+ ":" + password , url};