Dans des circonstances normales, lorsque nous utilisons CURL pour soumettre des données POST, nous avons l'habitude de les écrire comme ceci :
curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);
Mais cette méthode d'écriture n'est pas très utile parfois, peut-être que vous obtiendrez un 500 erreur renvoyée par le serveur. Mais lorsque nous essayons de soumettre des données au serveur à l'aide de Socket, nous obtenons des résultats très corrects.
Par exemple, nous avons le fichier PHP suivant sur le serveur :
<?php print_r($_SERVER);?>
Lorsque nous utilisons CURL pour envoyer des données au serveur sans prêter attention aux détails, nous pouvons obtenir les résultats suivants, qui Ce n'est pas notre résultat idéal :
[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122
Mais si nous utilisons http_build_query($post_data) au lieu de $post_data et soumettons ensuite des données à ce script PHP, nous obtiendrons des résultats différents de ceux ci-dessus. C'est notre résultat idéal. :
[CONTENT_TYPE] => application/x-www-form-urlencoded
Il n'est pas difficile de voir à partir de l'exemple ci-dessus que lors de l'utilisation de CURL et que le paramètre est data, lors de la soumission des données au serveur, l'en-tête HTTP enverra Content_type: application/ x-www- formulaire-urlencodé. Il s'agit de l'en-tête envoyé par le navigateur lors de la soumission du formulaire sur une page Web normale