Quando si utilizza cURL, il -u
option (o --user
) è usato per fornire le credenziali per HTTP Basic authentication. Questo imposta l'intestazione Authorization
per contenere il necessary data per l'autenticazione con il server.
Questi passaggi si applicano a Postman packaged app. Per i passaggi per l'applicazione legacy, vedere this di revisione questa risposta.
Per utilizzare l'autenticazione HTTP di base come lo siete stati nel comando Curl, fare clic sulla scheda Autorizzazione e immettere le credenziali. Cliccando su la richiesta di aggiornamento aggiungerà per te l'intestazione Authorization
necessaria.


di presentare i dati JSON nello stesso modo che hai fatto con curl, utilizzare una richiesta POST
, selezionare grezzo sotto la Corpo e inserisci i tuoi dati in questo modo:

eseguire il debug di questo ho usato Fiddler - un proxy web di debug gratuito.
ho usato l'opzione di cURL --proxy
per renderlo inviare le proprie richieste attraverso Fiddler in questo modo:
curl \
--proxy http://localhost:8888 \
-u foo:bar \
-d "{\"jsonrpc\": \"2.0\", \"method\": \"feed.list\", \"id\": 1}" \
http://localhost
Ora che la richiesta passa attraverso Fiddler, posso selezionare dalla lista delle sessioni, e utilizzare il "grezzo" ispettore di vedere la richiesta grezzo:

Questo mi mostra che cURL sta effettuando una richiesta POST
con autenticazione HTTP Basic e il contenuto application/x-www-form-urlencoded
. Questo tipo di dati è normalmente costituito da chiavi e valori, ad esempio foo=bar&hoge=fuga
. Tuttavia, questa richiesta CURL sta inviando una chiave senza valore. Una chiamata a var_dump($_POST)
produrrà la seguente:

Con un =
alla fine dei dati (in questo modo: {"jsonrpc": "2.0", "method": "feed.list", "id": 1}=
) il var_dump
cedano seguente:

Tuttavia, sembra che JsonRPC utilizzerà file_get_contents('php://input')
nel tuo caso. Ciò restituisce i dati inviati con la richiesta, incluso uno =
, se i dati terminano con esso. Poiché proverà ad analizzare i dati di input come una stringa JSON, fallirà se la stringa termina con un =
, perché sarebbe JSON non valido.
Utilizzando l'estensione per Chrome FoxyProxy, ho creato una configurazione proxy per Fiddler (127.0.0.1:8888
), che mi ha permesso per eseguire il debug facilmente i dati inviati su richiesta del postino POST
. Utilizzando x-www-form-urlencoded
con una chiave di foo
senza valore, i dati inviati erano in realtà foo=
, il che comporterebbe l'invalidità della stringa JSON.
Tuttavia, l'utilizzo dell'ingresso "raw" consente di inviare i dati specificati senza aggiungere =
alla fine di esso, garantendo in tal modo che i dati siano JSON validi.
@ user2198400 Ho aggiornato la mia risposta per rispondere alla tua domanda sull'utilizzo di dati "grezzi". Non so di fare la risposta UTF-8. Probabilmente dovresti fare una nuova domanda per questo. – Spooky
E l'autenticazione PAM? Sto cercando di simulare il seguente comando di arricciatura: '' ' curl --no-check-certificate https: // localhost: 8000/login \ -d username = myusername \ -d password = password_utente \ -d eauth = 'pam' '' ' Li ho aggiunti come parametri ma non funziona –