Rulați curl de la Java cu ProcessBuilder – Java, JSON, Curl, ProcessBuilder, Django-odihnă-cadru

scriu un program de testare în Java pentru a încerca miconexion la un API restabilit în Django (Djangorestframework la fi precis). Una dintre opțiuni este să încercați unul dintre API cu curl. Rularea comenzii curl de la coajă funcționează bine: de exemplu:

iv id = „9cb2dfed4c”

Acest lucru returnează foarte bine adresele URL ale API și textul de ajutor în format JSON.

Acum, când încerc să invocu la fel de la Java, folosind procesul de proces, am primit acest răspuns:

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

codul Java sunt Utilizarea este:

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

Pentru că am și secvența de eroare prin:

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

Știu că începe comanda curl, pentru că a face o eroare în una dintre opțiuni, arată textul de ajutor curl.

Nu sunt sigur că este diferența dintre invocarea acestuia, destul de sigur că este aceeași comandă .

Aproape, „GetapaiooturnLString ()” Returnează adresa URL corectă: http://127.0.0.1:8000/api/v1/

răspunsuri

5 pentru răspuns № 1

Fiecare șir care trece la ProcessBuilder constructorul reprezintă un argument, deci nu aveți nevoie de citatele pe care le-ați avea Ce să utilizați cu coaja. Încercați următoarele:

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

Dacă utilizați citate, ele devin parte a valorii care este trecută în acest proces, așa că încercam să autentifică cu un nume de utilizator de "user și o parolă de pwd".

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *