今天在公司碰到了一個(gè)bug,就是以前一直用curl下載的MP3錄音文件為空了,但是瀏覽器去get請求是有文件的,并且大小還不是0kb,但是我用curl下載下來就是0K,百思不得其解。終于功夫不負(fù)有心人,得到了方法,原來我一直要去第三方的接口拿到錄音數(shù)據(jù),但是今天的錄音數(shù)據(jù)中地址跳轉(zhuǎn)了,也就是第一次請求的地址返回的是302, 這是以前的代碼 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $info = curl_exec($ch); 也就是說curl在第一次請求額時(shí)候,服務(wù)器返回302,其實(shí)是要跳轉(zhuǎn)的,但是curl是默認(rèn)沒有跳轉(zhuǎn)的,所以$info一直就是空的 改進(jìn)之后 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $info = curl_exec($ch); 這次是多了 CURLOPT_FOLLOWLOCATION,表示允許curl去跳轉(zhuǎn)。$info數(shù)據(jù)有了! ps:關(guān)于資料 curl_setopt($ch, CURLOPT_MAXREDIRS,20); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($rch, CURLOPT_HEADER, TRUE); curl_setopt($rch, CURLOPT_NOBODY, TRUE); |
|