web-dev-qa-db-fra.com

Show Curl POST En-têtes de demande? Y a-t-il un moyen de faire cela?

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.

80
Rick

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.

68
RobertPitt

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
163
Joseph Lust

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);
9
Nassim Aouragh

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

6
Liutas

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).

3
greg0ire