2011-10-14 9 views
5

आज मैं इस अजीब त्रुटि के दौरान 'lib curl' का उपयोग करके कुछ कोशिश कर रहा था, मुझे इसके लिए कोई समाधान नहीं मिला, क्या आप इसे समझने में मेरी सहायता कर सकते हैं?php curl - अनुरोध को खंडित किया जाना चाहिए या सामग्री की लंबाई

<?php 
set_time_limit(0); 
    class cURL 
    { 
    var $content; 
    var $cookie; 
    var $headers = array(); 
    var $ch; 
    var $data; 
    var $info; 
    var $httpcode; 
    var $proxy_ip; 
    var $proxy_port; 
    var $cookie_f; 

    function __construct($cookie = '') 
    { 
     if (!empty($cookie)) { 
      $this->cookie_f = $cookie; 
     } 
    } 

    function setproxy($proxy) 
    { 
     list($ip, $porta) = explode(":", $proxy); 
     $this->proxy_ip = $ip; 
     $this->proxy_port = $porta; 
    } 

    function setcookie($cookie) 
    { 
     $this->cookie = $cookie; 
    } 

    function open($type, $url) 
    { 
     $this->ch = curl_init(); 
     curl_setopt($this->ch, CURLOPT_URL, $url);  
     curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($this->ch, CURLOPT_HEADER, true); 
     //curl_setopt($this->ch, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded", "Content-length: 216")); 
     curl_setopt($this->ch, CURLOPT_ENCODING, ""); 
     curl_setopt($this->ch, CURLOPT_COOKIEFILE, getcwd() . '/cookies.cookie'); 
     curl_setopt($this->ch, CURLOPT_COOKIEJAR, getcwd() . '/cookies.cookie'); 
     curl_setopt($this->ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18"); 

     if (strtolower($type) == 'post') { 
      curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, "POST"); 
      curl_setopt($this->ch, CURLOPT_POST, 1); 
      curl_setopt($this->ch, CURLOPT_POSTFIELDS, $this->data); 
      curl_setopt($this->ch, CURLOPT_HEADER, true); 
     } 

     $this->content = curl_exec($this->ch); 
     curl_close($this->ch); 
     return $this->content; 

    } 
    } 

?> 
<?php 
    $curll = New cURL; 
    $curll ->setCookie = "cookies.cookie"; 
    $curll ->data = "username=user&password=pass&IsSyncUp=&FacebookAssociation=&SNAccessToken="; 
    $curll ->open("POST", "http://www.website.com"); 
    $curll ->data = '__EVENTTARGET=ctl00$ctl00$cphRoblox$cphMyRobloxContent$lbSend&ctl00$ctl00$cphRoblox$cphMyRobloxContent$rbxMessageEditor$txtSubject=AAAAAAAAA&ctl00$ctl00$cphRoblox$cphMyRobloxContent$rbxMessageEditor$txtBody=BBBBBBBBB'; 
    $curll ->open("POST", "http://www.website.com/My/PrivateMessage.aspx?RecipientID=20815603"); 
    echo $curll ->content; 
?> 

तो, मेरे से त्रुटि आई थी:

HTTP/1.1 302 मिले कैश-नियंत्रण: निजी सामग्री प्रकार: text/html; charset = utf-8 स्थान: /Login/Default.aspx?ReturnUrl=%2fMy%2fPrivateMessage.aspx%3fRecipientID%3d20815603 & प्राप्तकर्ता आईडी = 20815603 सर्वर: माइक्रोसॉफ्ट-आईआईएस/7.0 सेट-कुकी: आरबीएक्स-आईपी =; पथ = /; केवल Http सेट-कुकी: RBXSource = rbx_acquisition_time = 10/14/2011 3:32:12 PM पर & rbx_acquisition_referrer = http: //www.website.com/My/PrivateMessage.aspx RecipientID = 20,815,603 & rbx_medium = प्रत्यक्ष & rbx_source = www .website.com & rbx_campaign = & rbx_send_info = 0; समाप्ति = सूर्य, 13-नवंबर -2011 21:32:12 जीएमटी; पथ =/एक्स-एएसपीनेट-संस्करण: 4.0.3031 9 एक्स-संचालित-द्वारा: एएसपी.नेट पी 3 पी: सीपी = "सीएओ डीएसपी कॉर कुरा एडीमा देवा हमारा इंडिया फाई ओएनएल यूएनआई कॉम एनएवी इंट डेम प्री" तिथि: शुक्र, 14 अक्टूबर 2011 20:32:12 जीएमटी सामग्री-लंबाई: 224 HTTP/1.1 411 लंबाई आवश्यक सामग्री-प्रकार: पाठ/एचटीएमएल; charset = us-ascii सर्वर: माइक्रोसॉफ्ट-एचटीटीपीआई/2.0 दिनांक: शुक्र, 14 अक्टूबर 2011 20:32:12 जीएमटी कनेक्शन: बंद सामग्री-लंबाई: 344
लंबाई आवश्यक HTTP त्रुटि 411. अनुरोध को बंद कर दिया जाना चाहिए या कंटेंट की लम्बाई।

तो मेरी समस्या थी "अनुरोध को खंडित किया जाना चाहिए या सामग्री की लंबाई होनी चाहिए।" मेरा पोस्ट 'लाइव HTTP शीर्षलेख' (मोज़िला)

का उपयोग कर ब्राउज़र पोस्ट से परामर्श करके बनाया गया था यदि मैं सेकेंड डेटा & खोलता/पोस्ट करता हूं तो यह ठीक काम करता है। सेकेंड डेटा और ओपन/पोस्ट समस्या थी।

क्या कोई मेरी मदद कर सकता है? पढ़ने के लिए धन्यवाद।

+0

FYI: CURLOPT_CUSTOMREQUEST अनुरोध/अनुरोध के अलावा अनुरोधों के लिए है। यह तब होता है जब आपको हेड, पुट इत्यादि करने की ज़रूरत होती है ... CURLOPT_POST का उपयोग कर पोस्ट मोड में कर्ल डालता है। –

उत्तर

2

यह जानना मुश्किल है कि क्या भेजा जा रहा है जब तक आप पारित होने वाले वास्तविक डेटा को नहीं देखते।

फिडलर वेब प्रॉक्सी डाउनलोड करें और कर्ल के साथ सटीक ब्राउज़र आउटपुट की तुलना करें।

http://www.fiddler2.com/fiddler2/

Fiddler के माध्यम से पारित करने के लिए कर्ल PHP कोड की इस पंक्ति जोड़ें।

curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888'); 
+0

मुझे पास डेटा पता है, लाइव HTTP शीर्षलेख पोस्ट डेटा दिखाते हैं और यह बिल्कुल मेरे 'डेटा' पोस्ट की तरह था, वैसे भी मैं आपके फिडलर को देखने का प्रयास करूंगा आह मुझे लगता है कि अब मुझे आपका मतलब है ... – PedroGabriel

+0

व्हाट क्या मुझे फिडलर परिणामों में देखना चाहिए? वर्तमान अनुरोध हिस्सा कहां बंद कर दिया है? – PedroGabriel

+1

आप जिस अनुरोध में रुचि रखते हैं उस पर क्लिक करें और रॉ या हेक्सव्यू के तहत दाहिने तरफ देखें। सुनिश्चित करें कि वे कर्ल और ब्राउज़र दोनों के लिए मेल खाते हैं। – Len

संबंधित मुद्दे