Je suis en train de construire une application d'automatisation Web Curl et je ne parviens pas à obtenir le résultat souhaité de mon action POST, je ne parviens pas à comprendre comment afficher l'intégralité de === POST demande que j’envoie (avec les en-têtes), j’ai cherché à ce sujet, mais tout ce qui s’affiche correspond aux en-têtes de réponse. sur google semblent mentionner ..
Je sais que je peux afficher le résultat d'une requête curl en utilisant quelque chose comme ceci (pardonnez-moi si ma syntaxe est désactivée, j'ai déjà arrêté ma machine virtuelle avec mon ID et le code auquel faire référence.
$result = curl($curl_exect) ;
Quoi qu'il en soit, j'apprécierais énormément tout conseil sur la manière d'afficher l'intégralité des en-têtes, merci.
Vous pouvez voir les informations concernant le transfert en faisant:
curl_setopt($curl_exect, CURLINFO_HEADER_OUT, true);
avant la demande, et
$information = curl_getinfo($curl_exect);
après la demande
Voir: http://www.php.net/manual/en/function.curl-getinfo.php
Vous pouvez aussi utiliser le CURLOPT_HEADER
dans votre curl_setopt
curl_setopt($curl_exect, CURLOPT_HEADER, true);
$httpcode = curl_getinfo($c, CURLINFO_HTTP_CODE);
if($httpcode == 200) {
return true;
}
return false;
Ce ne sont que quelques méthodes d'utilisation des en-têtes.
Voici tout ce dont vous avez besoin:
curl_setopt($curlHandle, CURLINFO_HEADER_OUT, true); // enable tracking
... // do curl request
$headerSent = curl_getinfo($curlHandle, CURLINFO_HEADER_OUT ); // request headers
Vous pouvez sauvegarder tous les en-têtes envoyés par curl dans un fichier en utilisant:
$f = fopen('request.txt', 'w');
curl_setopt($ch,CURLOPT_VERBOSE,true);
curl_setopt($ch,CURLOPT_STDERR ,$f);
Vous pouvez vous-même demander des en-têtes en utilisant:
// open a socket connection on port 80
$fp = fsockopen($Host, 80);
// send the request headers:
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $Host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
$result = '';
while(!feof($fp)) {
// receive the results of the request
$result .= fgets($fp, 128);
}
// close the socket connection:
fclose($fp);
Comme écrit sur comment faire une demande
J'ai eu exactement le même problème récemment, et j'ai installé Wireshark (c'est un outil de surveillance du réseau). Vous pouvez tout voir avec cela, sauf le trafic crypté (HTTPS).