PHP - Publication de JSON via file_get_contents
Je suis en train de POSTER le contenu JSON à distance à un point de terminaison REST, toutefois, le "contenu" de la valeur semble être vide lors de la livraison. Tous les autres en-têtes, etc sont correctement reçus, et le service web tests avec succès avec un navigateur basé sur le client de test.
Est-il un problème avec ma syntaxe ci-dessous où j'ai spécifier le contenu du champ?
$data = array("username" => "duser", "firstname" => "Demo", "surname" => "User", "email" => "[email protected]");
$data_string = json_encode($data);
$result = file_get_contents('http://test.com/api/user/create', null, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => array('Content-Type: application/json'."\r\n"
. 'Authorization: username:key'."\r\n"
. 'Content-Length: ' . strlen($data_string) . "\r\n"),
'content' => $data_string)
)
));
echo $result;
source d'informationauteur Ben
Vous devez vous connecter pour publier un commentaire.
C'est le code que j'ai toujours utiliser et il semble assez similaire (mais c'est bien sûr pour x-www-form-urlencoded).
Peut-être que votre
username:key
doit êtrebase64_encode
'd.La précédente réponse de
est incorrect. Cette fonction fonctionne parfois, mais elle est inexacte et échouera si vous n'utilisez pas le type de Contenu application/x-www-form-urlencoded et que vous passez un nom d'utilisateur et mot de passe.
Il travaille pour l'écrivain, car l'application/x-www-form-urlencoded est la valeur par défaut du type de Contenu, mais sa façon de gérer le nom d'utilisateur et le mot de passe est d'écraser la précédente déclaration de type de contenu.
Voici le corrigé de la fonction:
Remarque la ligne:
$opts['http']['header' .= (dot égale à ajouter à l'élément de tableau.)