Run Curl da Java con ProcessBuilder – Java, JSON, CURL, ProcessBuilder, Django-Rest-Framework

Sto scrivendo un programma di test in Java per provare Miconexion in un API riposante a Django (DjangorestFramework to Sii preciso). Una delle opzioni è provare una delle API con il ricciolo. L’esecuzione del comando Curl dalla shell funziona bene: ad esempio:

curl --show-error --request GET --header "Accept: application/json" --user "user:pwd" http://127.0.0.1:8000/api/v1/

restituisce molto bene gli URL dell’API e il testo della Guida in formato JSON.

Ora, quando provo a invocare lo stesso da Java, usando ProcessBuilder, ottengo questa risposta:

{"detail": "You do not have permission to access this resource. You may need to login or otherwise authenticate the request."}

Il codice Java I’m L’utilizzo è:

Perché prendo anche la sequenza di errore da:

InputStream errorStream= shell.getErrorStream();InputStream shellIn = shell.getInputStream();

So che avvia il comando Curl, perché effettuare un errore in una delle opzioni mostra il testo della Guida di Curl.

Non sono sicuro di qual è la differenza tra invocandolo, sicuro che sia lo stesso comando .

A proposito, “GetapaiRooRmentLstring ()” restituisce l’URL corretto: http://127.0.0.1:8000/api/v1/

Risposte

5 per la risposta № 1

Ogni stringa che passa a ProcessBuilder Il costruttore rappresenta un argomento, quindi non hai bisogno delle quotazioni che avresti Cosa usare con il guscio. Prova quanto segue:

ProcessBuilder p=new ProcessBuilder("curl","--show-error", "--request","GET","--header","Accept: application/json", "--user", userName + ":" + password, getApiRootUrlString());

Se si utilizzano quotazioni, diventano parte del valore che viene trasmesso nel processo, quindi stavo cercando di autenticare con un nome utente di "user e una password di pwd".

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *