Curl POST İsteği Başlıkları Gösterilsin mi? Bunu yapmanın bir yolu var mı?


87

Bir Curl web otomasyon uygulaması oluşturuyorum ve POST işlemimin istenen sonucunu alamamakla ilgili bir sorun yaşıyorum, gönderdiğim POST isteğinin tamamını (başlıklarla) nasıl gösterebileceğimi bulmakta biraz sorun yaşıyorum, ben bunu araştırıyorum ama ortaya çıkan her şey yanıt başlıkları, aslında bunları da istiyorum ama aynı zamanda istek, google'da bulduğum hiçbir gönderiden bahsetmiyor ...

Bunun gibi bir şey kullanarak bir curl isteğinin sonucunu görüntüleyebileceğimi biliyorum (sözdizimim kapalıysa beni affedin, sanal makinemi ide ve kodumla zaten kapattım.

 $result = curl($curl_exect) ;

Her neyse, tam başlıkların nasıl görüntüleneceğine dair herhangi bir tavsiyeyi çok takdir ediyorum, teşekkürler


Yanıtlar:


83

Aşağıdakileri yaparak transfer ile ilgili bilgileri görebilirsiniz:

curl_setopt($curl_exect, CURLINFO_HEADER_OUT, true);

talepten önce ve

$information = curl_getinfo($curl_exect);

talepten sonra

Görünüm: http://www.php.net/manual/en/function.curl-getinfo.php

Ayrıca CURLOPT_HEADER,curl_setopt

curl_setopt($curl_exect, CURLOPT_HEADER, true);

$httpcode = curl_getinfo($c, CURLINFO_HTTP_CODE);

return $httpcode == 200;

Bunlar, başlıkları kullanmanın sadece bazı yöntemleridir.


4
Bunu denedim ama sadece POST dizisini çıkardı, bu yüzden tam başlıkları göstermiyor, sadece POST göstermiyor ve alıcı sunucunun göreceği gibi değil, bu yüzden sorun giderme için ideal değil
Rick

5
Cevap tam değil. İstek yerine getirilmeden önce şunları yapmanız gerekircurl_setopt($curl_exect, CURLINFO_HEADER_OUT, true);
naitsirch

1
bu yalnızca sunucunun neyi geri gönderdiğini gösterir. curl_setopt ($ ch, CURLOPT_VERBOSE, true) gibi görünüyor; sunucuya ne gönderdiğini görmeni sağlar.
Steven Teo

169

İşte ihtiyacınız olan her şey:

curl_setopt($curlHandle, CURLINFO_HEADER_OUT, true); // enable tracking
... // do curl request    
$headerSent = curl_getinfo($curlHandle, CURLINFO_HEADER_OUT ); // request headers

6
POST verileri de nasıl gösterilebilir? Yani curl_setopt tarafından eklenen ($ ch, CURLOPT_POSTFIELDS, $ postData);
Dan Dascalescu

@DanDascalescu Verileri POST'ladığınızdan beri, Curl talebini oluştururken geri yakalamaya gerek yoktur. Not: POST oluşturma formu değerleri üstbilgi olarak değil "Form Verileri" olarak gönderilir, dolayısıyla yukarıdakiler neden gösterilmez. Kablonun içinde ne olduğunu gerçekten görmeniz gerekiyorsa, WireShark'ı deneyin.
Joseph Lust

10

Curl ile gönderilen tüm başlıkları aşağıdakileri kullanarak bir dosyaya kaydedebilirsiniz:

$f = fopen('request.txt', 'w');
curl_setopt($ch,CURLOPT_VERBOSE,true);
curl_setopt($ch,CURLOPT_STDERR ,$f);

7

Şunları kullanarak kendiniz başlık talep edebilirsiniz:

// 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);

Nasıl istekte bulunulduğu üzerine yazılmış gibi


Gönderi için teşekkürler, sanırım bunu curl'den farklı bir kitaplık olduğu için tam olarak anlamıyorum, değil mi? Bunu sadece curl ile yapmanın bir yolu var mı? Eğer değilse, bu şekilde yapmaya bakacağız, onun ben fputs aşina değilim sadece bu
Rick

Bu aslında php'nin yerel işlevselliğidir
SSH Bu

1
Bu harika bir cevap çünkü ham talebi ortaya çıkarıyor. Bana her zaman, bazen yüklenmesi gereken ve her zaman mevcut olmayan bir kitaplık olan cURL'yi kullanmam öğretildi.
Altimus Prime

2

Son zamanlarda tamamen aynı sorunu yaşadım ve Wireshark'ı kurdum (bu bir ağ izleme aracı). Bununla şifrelenmiş trafik (HTTPS) dışında her şeyi görebilirsiniz.


2
WireShark, WinCap veya başka bir yakalama sistemi üzerinde çalışıyor, çalışması için atheros tabanlı bir yonga setine sahip olmanız gerektiğini düşünüyorum, neden sadece krom kurup, Ctrl+Shift+Jardından XHRDüğmeye ve dosya adına tıklayıp başlıkları ve verileri görmüyorsunuz.
RobertPitt

Wireshark'ı denedim ama giden Curl POST trafiğimi almıyor gibi görünüyor
Rick

Yerel bir sunucu üzerinde çalıştığınızı varsaydım, durum bu mu?
greg0ire

Robert, Chrome'da söylediklerini yapmaya çalışıyorum ama Ctrl + Shift + 3 yaptığımda hiçbir şey yapmıyor, bununla ilgili bilgi arıyorum ama alakalı bir şey bulamıyorum, Chrome'un hangi özelliği bu erişiyor mu? Teşekkürler
Rick

Tamam, Chrome'da başlıkları görüntülemeyle ilgili olarak bunu buldum: google.com/support/forum/p/Chrome/… Buna erişmek için Ctrl + Shift + i tuşlarına inanıyorum
Rick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.