Wie stimulieren cURL-request zu einer Anfrage über postman
Ich bin mit der folgenden cURL-Anfrage an localhost, die gut läuft:
curl -u admin:e4d4face52f2e3dc22b43b2145ed7c58ce66e26b384d73592c -d "{\"jsonrpc\": \"2.0\", \"method\": \"feed.list\", \"id\": 1}" http://localhost/minifluxR/jsonrpc.php
Aber wenn ich den gleichen Wunsch, mit Postbote anstelle von cURL, bin ich immer:
{"jsonrpc":"2.0","id":null,"error":{"code":-32700,"message":"Parse error"}}
Im Postman habe ich eine GET
Anfrage und schickte die folgende Header:
url:http://localhost/minifluxR/jsonrpc.php
username:admin
api_token:e4d4face52f2e3dc22b43b2145ed7c58ce66e26b384d73592c
method: feed.list
Folgenden ist die PHP-Funktion, die ich versuche zu trigger:
$server = new Server;
$server->authentication(array(
\Model\Config\get('username') => \Model\Config\get('api_token')
));
//Get all feeds
$server->register('feed.list', function () {
return Model\Feed\get_all();
});
Bitte helfen Sie mir, diese Fehler zu beheben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei der Verwendung von cURL, die
-u
option (oder--user
) wird verwendet, um die Anmeldeinformationen für Die HTTP-Basic-Authentifizierung. Dies setzt dieAuthorization
- header enthalten die notwendigen Daten, um mit dem server authentifizieren.Diese Schritte gelten für Postboten packaged app. Schritte für die bestehende app, anzeigen diese der revision diese Antwort.
Verwenden die HTTP-Basic-Authentifizierung, wie Sie wurden in den cURL-Befehl, klicken Sie auf die Authorization tab " und geben Sie Ihre Anmeldeinformationen ein. Klick auf Update-Anfrage wird, fügen Sie die notwendigen
Authorization
header für Sie.Einreichen, die JSON-Daten in der gleichen Weise, dass Sie nicht mit cURL, verwenden Sie eine
POST
Anfrage, wählen Sie raw unter Text tab, und geben Sie Ihre Daten wie folgt:Debuggen, die ich verwendet Fiddler - ein kostenloser web debugging proxy.
Ich verwendet cURL ist
--proxy
option zu machen, senden Sie Ihre Anfragen über Fiddler etwa so:Nun, dass der Antrag geht durch Fiddler, kann ich wählen Sie es aus der session-Liste, und verwenden Sie die "raw" - Inspektor zu sehen, der raw-Anfrage:
Das zeigt mir, dass der cURL ist ein
POST
Anforderung mit HTTP-Basic-authentication undapplication/x-www-form-urlencoded
Inhalt. Diese Art von Daten sich in der Regel aus Schlüssel und Werten, wiefoo=bar&hoge=fuga
. Jedoch, diese cURL Anfrage Absenden ein Schlüssel ohne Wert. Ein Aufrufvar_dump($_POST)
wird sich Folgendes ergeben:Mit einem
=
am Ende der Daten (etwa so:{"jsonrpc": "2.0", "method": "feed.list", "id": 1}=
) dievar_dump
wird sich Folgendes ergeben:Allerdings scheint es, dass JsonRPC verwenden
file_get_contents('php://input')
in Ihrem Fall. Dieser liefert die Daten, die gesendet wurde, mit der Anfrage, darunter ein=
, wenn die Daten, die endet mit ihm. Denn es wird versuchen, analysieren die input-Daten als JSON-string ist, wird es fehlschlagen, wenn die Zeichenfolge endet mit einem=
ist, denn das wäre ungültiges JSON.Mithilfe der FoxyProxy - Erweiterung für Chrome habe ich eine proxy-Konfiguration für Fiddler (
127.0.0.1:8888
), was mir erlaubt, einfach die debug-Daten, die gesendet werden von PostbotenPOST
Anfrage. Mitx-www-form-urlencoded
mit einem Schlüssel vonfoo
ohne Wert, werden die Daten gesendet war eigentlichfoo=
, die in Ihrer JSON-string als ungültig.Jedoch mit "raw" - Eingang wird für die angegebenen Daten gesendet werden, ohne
=
Hinzugefügt, um das Ende, damit die Daten gültig JSON.Curl ist mit HTTP-Basic-Authentifizierung standardmäßig aktiviert. Ihre Headern gesetzt, in der Postboten sind etwas anderes. Versuchen Sie es mit Basic Auth in Postman. Es ist in einem top-panel, füllen Sie username und password und authorization-header generiert werden.