2014-10-09 141 views
1

捲曲響應我的工作捲曲半徑我寫曲此裏得到郵政編碼,它是在殼牌工作正常,但是當我在PHP把它轉換我收到編碼的響應。我的代碼如下獲取編碼形式

PHP代碼是

$headers = array(
    'Referer:http://www.freemaptools.com/find-zip-codes-inside-radius.htm', 
    'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36', 
    'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Encoding:gzip, deflate', 
    'Accept-Language:en-US,en;q=0.5', 
    'Connection:keep-alive', 
    'Pragma:no-cache', 
    'Cache-Control:no-cache', 
    'Origin:http://www.freemaptools.com', 
    'Content-Type:text/plain; charset=UTF-8'   
); 


$curl_handle = curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL, 'http://www.freemaptools.com/ajax/get-all-zip-codes-inside.php?radius=50&lat=36.7017377&lng=-95.87759640000002&rn=8523'); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_handle, CURLOPT_HEADER, 1); 
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($curl_handle, CURLOPT_COOKIE, " __utma=126142042.1539287389.1412828292.1412828292.1412828292.1; __utmb=126142042.1.10.1412828292; __utmc=126142042; __utmz=126142042.1412828292.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1"); 


$buffer = curl_exec($curl_handle); 


curl_close($curl_handle); 


echo '<pre>'; print_r($buffer); 

響應就像

‹Å—OoÓ@Å¿J」;aÿÍήÔVZÚmÕõÛinT¨ZDÃ>=「TY«JØÊ%ÎÁ¿Ì{3og¾ÝüørûãñäèéËè÷Ý÷ŸnǵÖãÑ×›õñXãDXé•¡çûÏÇã7&AJ?}¼[ÿ:Ÿ†2®èááçýæñ2•Í4]ÆŠ~{\߬é}õx´¾ûvûûá~óöñèíËLØÊ*#2ÓN$"*ÈÌYX4añ~Z0ÿmO020§+¼Ó38ŸÇÕõ¼(â%oKÜ‘Áä2£TÕŽ|C5/§ƒPY½R²šQ½qÝŽ:ס[email protected]©B9ËÜÂ[ÈUÎS>Ä!¬µ\ KX©OSA/VO«X-Aò6Ön一些事情;),即(é6³ô「lVUê-äi'dXÅμE>! 7ðÆÏ|e|:LcÆ¥<!éAA /1Wø.Te}Š¢/ R·HÔÜGá¤QŠ>「ÖÏftêO「ʽц¡ JV-M UI«ZO「¶Díì()‰3±U¼LUìÍtŒI)ÜñÖJ°·ƒ1Ï©¥-ut-d>†§©(æåsS> EQ‡½©,.¼Ò[HÛÅè澤zH1GiJ! ;ê šœ|ÚœÅ「,·LËÐì_|gHmÝ2·4- rÉW|ÃËÔÜPM‡/ HMK>è<℃,...,Kìtn「@œç¤u¹Æ「-AÌúªjØ~XtÞØ®'èsóìý€這$μ,> <ø< = E |?我äáN,æNJÓq...õ7cS '| \Ùül2; QHK ÷' £ö•sè'uÍ6‰ƒbøB;,lyôœŸyWa9[ÔL؃-ˬ°hyïÐDjowÄ*Ðö5'Û¤Ùå:Ùº³©%Y $ E ØéU^¼À6)ÈZVy-<çz‹RdykZ®«UÏ:S´RJ¯eV¶ }úNˆcÂÒM¡»~9:BÚt½ŽÕ Ý㘦žîHºV¢Î»eÙ×BÇvÛÍ=ж8ê^GqžÃn¹*;ò÷‰|û|<ùÃr6…j

請幫什麼錯我的代碼,你的幫助,將不勝感激。

回答

1

你會得到相同的輸出在你的shell腳本類似的東西:

$headers = array(
    'Referer:http://www.freemaptools.com/find-zip-codes-inside-radius.htm', 
    'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36', 
    'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language:en-US,en;q=0.5', 
    'Connection:keep-alive', 
    'Pragma:no-cache', 
    'Cache-Control:no-cache', 
    'Origin:http://www.freemaptools.com', 
    'Content-Type:text/plain; charset=UTF-8'  
); 

$curl_handle = curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL, 'http://www.freemaptools.com/ajax/get-all-zip-codes-inside.php?radius=50&lat=36.7017377&lng=-95.87759640000002&rn=8523'); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_handle, CURLOPT_HEADER, 1); 
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($curl_handle, CURLOPT_COOKIE, " __utma=126142042.1539287389.1412828292.1412828292.1412828292.1; __utmb=126142042.1.10.1412828292; __utmc=126142042; __utmz=126142042.1412828292.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1"); 

$buffer = curl_exec($curl_handle); 

$header_size = curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE); 
$body = substr($buffer, $header_size); 

curl_close($curl_handle); 

$body = strtr($body,array("<"=>"&lt;","&"=>"&amp;")); // for displaying html tags 
echo($body); 

在代碼中,你根本不閉上你的「前」標籤,然後結束,也

$curl_connection 

應該

$curl_handle 
+0

感謝它的作品 – Vinie 2014-10-09 07:27:28

2

添加

curl_setopt($curl_handle, CURLOPT_ENCODING, "gzip"); 

,這設置爲0,這樣就不會得到HTTP頭回

curl_setopt($curl_handle, CURLOPT_HEADER, 0); 

你告訴你同意接收gzip壓縮的數據,如果可能的Accept-Encoding:gzip,

服務器

而結果將是響應的HTTP標頭(其不存在如果CURLOPT_HEADER = 0)+ XML

<markers><marker zipcode="67333" lat="37.061924" lng="-95.875119" 
city="CANEY" county="MONTGOMERY" state="KS" timezone="6" /> and so on 

當然,你的瀏覽器不會表現出來。使echo hmltentities($buffer);(在這種情況下不需要),你會看到它。

+0

因爲你接收XML時,我加入了這個然後讓空白頁 – Vinie 2014-10-09 07:04:43

+0

...你這是什麼期望在瀏覽器中看到?我在答案中顯示輸出。 – Cheery 2014-10-09 07:10:02

+0

仍然空白頁 – Vinie 2014-10-09 07:18:00