Comment stimuler la demande cURL à une demande à l'aide du facteur
Je suis en utilisant le cURL suivante demande à localhost qui fonctionne très bien:
curl -u admin:e4d4face52f2e3dc22b43b2145ed7c58ce66e26b384d73592c -d "{\"jsonrpc\": \"2.0\", \"method\": \"feed.list\", \"id\": 1}" http://localhost/minifluxR/jsonrpc.php
Mais quand j'ai envoyer la même demande à l'aide du Facteur au lieu de roulage, j'obtiens:
{"jsonrpc":"2.0","id":null,"error":{"code":-32700,"message":"Parse error"}}
En Facteur, j'ai utilisé un GET
demande et envoyé le texte suivant que les en-têtes:
url:http://localhost/minifluxR/jsonrpc.php
username:admin
api_token:e4d4face52f2e3dc22b43b2145ed7c58ce66e26b384d73592c
method: feed.list
Ce qui suit est la fonction PHP je suis en train de déclenchement:
$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();
});
Merci de m'aider à corriger ces erreurs.
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation de cURL, le
-u
option (ou--user
) est utilisé pour fournir les informations d'identification pour L'authentification HTTP de Base. Ceci définit laAuthorization
- tête pour contenir la données nécessaires pour s'authentifier auprès du serveur.Ces étapes s'appliquent à du Facteur emballé app. Pour les étapes pour l'application héritée, vue cette de révision de cette réponse.
Pour utiliser l'authentification HTTP de Base que vous étiez dans votre commande cURL, cliquez sur le l'Autorisation onglet et entrez vos informations d'identification. En cliquant sur Demande de mise à Jour va ajouter le nécessaire
Authorization
- tête pour vous.De soumettre les données JSON de la même manière que vous l'avez fait avec cURL, utiliser un
POST
demande, sélectionnez brut la Corps onglet et entrez vos données comme suit:Pour déboguer cela, j'ai utilisé Fiddler - gratuit web debugging proxy.
J'ai utilisé cURL est
--proxy
option pour le faire envoyer ses demandes par le biais de Fiddler comme suit:Maintenant que la demande passe par Fiddler, je peux le sélectionner à partir de la liste de session, et d'utiliser le "raw" inspecteur de voir la demande brute:
Cela me montre que la boucle est de faire un
POST
demande avec l'authentification HTTP de Base etapplication/x-www-form-urlencoded
de contenu. Ce type de données se compose normalement de clés et de valeurs, telles quefoo=bar&hoge=fuga
. Toutefois, cette demande cURL est la soumission d'une clé sans valeur. Un appel àvar_dump($_POST)
va produire les résultats suivants:Avec un
=
à la fin des données (comme:{"jsonrpc": "2.0", "method": "feed.list", "id": 1}=
) levar_dump
va produire les résultats suivants:Cependant, il semble que JsonRPC utilisera
file_get_contents('php://input')
dans votre cas. Ceci renvoie les données qui ont été soumises avec la demande, y compris un=
, si les données se termine avec elle. Parce qu'il va tenter d'analyser les données d'entrée une chaîne JSON, il échouera si la chaîne se termine par un=
, parce que ce serait invalid JSON.À l'aide de la FoxyProxy extension pour Chrome, j'ai créé une configuration de proxy pour violon de
127.0.0.1:8888
), qui m'a permis de résoudre facilement les données envoyées par le Facteur dePOST
demande. À l'aide dex-www-form-urlencoded
avec une clé defoo
sans valeur, les données envoyées était en faitfoo=
, ce qui aurait pour résultat de votre chaîne JSON étant non valide.Cependant, l'utilisation de "raw" d'entrée pour permettre l'spécifiée, les données sont envoyées sans
=
être ajouté à la fin de celui-ci, assurant ainsi la validité des données JSON.Curl est l'aide de l'authentification HTTP de Base par défaut. Vos en-têtes set de Facteur sont quelque chose de différent. Essayez d'utiliser l'Authentification Basique en Facteur. Il est en haut du panneau, vous entrez dans le nom d'utilisateur et le mot de passe et l'autorisation d'en-tête sera généré.