CURLOPT_POST vs. CURLOPT_POSTFIELDS: L'option CURLOPT_POST est-elle requise?
Je suis nouveau sur cURL en PHP. J'ai une question concernant l'utilisation de curl options.
Tenir compte de deux fichiers de script: test1.php et test2.php tous deux présents dans la racine de www. Je suis en utilisant Ubuntu 12.04 LTS. La libcurl version de PHP est 7.22.0.
Contenu de test1.php
<?php
$ch = curl_init();
$post_data = array(
'firstname' => 'John',
'lastname' => 'Doe'
);
curl_setopt($ch, CURLOPT_URL, 'localhost/test2.php');
curl_setopt($ch, CURLOPT_POST, TRUE); //is it optional?
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_exec($ch);
curl_close($ch);
?>
Contenu de test2.php
<?php
var_dump($_POST);
?>
Quand j'execute test1.php via un navigateur, je peux voir les résultats affichés. Maintenant, si je retire curl option contenant CURLOPT_POSTl'exemple fonctionne toujours. Même si j'ai mis CURLOPT_POST à false, ce post est effectué et le résultat est affiché. Est-ce que ça CURLOPT_POST pas nécessaire à tous? Il ressemble option CURLOPT_POSTFIELDS
prend soin de l'envoi de données via POST sans utiliser de CURLOPT_POST
option. Quand j'ai l'impression $_SERVER
dans test2.php, la méthode de requête est toujours POST
(avec ou sans option CURLOPT_POST
).
Quelqu'un pourrait s'il vous plaît laissez-moi savoir l'utilisation exacte de CURLOPT_POST
option? Est-il nécessaire requis pour l'envoi de données via POST
?
source d'informationauteur Sanjay Maurya
Vous devez vous connecter pour publier un commentaire.
Vous sont corrects. CURLOPT_POSTFIELDS implique CURLOPT_POST. Vous n'avez pas besoin d'utiliser CURLOPT_POST tout en utilisant CURLOPT_POSTFIELDS. La méthode de la requête sera toujours mis à la POSTE dans ce cas.
Noter que c'est dans votre cas, aussi longtemps que vous voulez qu'il soit un POST demande.
Si vous ne voulez pas être un POST demande mais ensemble CURLOPT_POSTFIELDSveuillez voir ce Q&A:
Pour la future référence de l'API de document de dire ceci au sujet de CURLOPT_POST
Résumé:
Un vrai paramètre indique à la bibliothèque pour faire un HTTP post. Cela permettra également de faire de la bibliothèque d'utiliser le "Content-Type: application/x-www-form-urlencoded" en-tête. (C'est de loin le plus couramment utilisé et la méthode POST).
Utiliser le CURLOPT_POSTFIELDS option pour spécifier les données à la poste et CURLOPT_POSTFIELDSIZE pour définir la taille des données. En option, vous pouvez fournir des données à l'aide de la CURLOPT_READFUNCTION et CURLOPT_READDATA options.
Vous pouvez remplacer la valeur par défaut de publier des Contenus de Type: en-tête de la définition de votre propre avec CURLOPT_HTTPHEADER.
L'aide de POST avec HTTP 1.1 implique l'utilisation d'un "droit d'Attendre: 100-continue" en-tête. Vous pouvez désactiver cet en-tête avec CURLOPT_HTTPHEADER comme d'habitude.
Si vous utilisez la POSTE à un serveur HTTP 1.1, vous pouvez envoyer des données sans connaître la taille avant de commencer le POST si vous utilisez le codage mémorisé en bloc. Vous l'activer en ajoutant un en-tête comme des "Transfer-Encoding: chunked" avec CURLOPT_HTTPHEADER. Avec HTTP 1.0 ou sans bloc de transfert, vous devez spécifier la taille de la demande.
si vous avez émis une requête POST et vous souhaitez faire une TÊTE ou d'OBTENIR au lieu de cela, vous devez choisir le nouveau type de demande à l'aide de CURLOPT_NOBODY ou CURLOPT_HTTPGET ou similaire.
Je me suis mise à l'essai si le réglage de la CURLOPT_POST essayer remplace mon CURLOPT_HTTPHEADER, "Content-Type: application/json; charset=utf-8".