以编码形式获取curl响应 [英] Getting curl response in Encoded form

查看:121
本文介绍了以编码形式获取curl响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力curl获得Zipcode在一个半径内我写curl为此,它是工作正常在壳,但当我转换它在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',
'原产地: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 =(直接)| utmccn =(直接)| utmcmd = (none); __utmt = 1);


$ buffer = curl_exec($ curl_handle);


curl_close($ curl_handle);


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

响应是类似于

的事情

code> õñXãDXé•¡çûÏÇã7和放大器; AJ?}¼[Y: Ÿ†2®èááçýæñ2•I4] AES〜{}\߬é〜õx'¾ûvûûá*óöñèíËLÃ~Ê#2 ON $*ÈÌYX4añ〜Z0ÿmO020§+¼Ó38ŸÇÕõ¼(A%oKÜ'Áä2£特兹| C5 /§ƒPY½R²šQ½qÝŽ: סC @ x©B9ËË[ÈUÎS>Ä!¬μ\ kx©ÔSÂ/vÔ«X-Aò6Ön;)íè(é6³ôlVUê-!äi'dXÅμE>7ðÆÏ|e|: †ÆÆÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ '6 {}: Ui«zo¶Díì()‰ÃÂÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÃÂÃÃÂÃÃÂÃÃÂÃÂÃÂÃÂÃÂÃÂÃÂÂé© zH1GiJ,E的国企|ڜŷLËÐì_|gHmÝ2•4rÉW|ÃËÔÜPM‡/ HMK> E<℃,...,Kìtn@œç¤u¹Æ-A 的ÌúªjØ~XtÞØ® èsóìý€这$μ,>< O< = E |我äáN,æNJÓq...õ7cS'|\Ùül2; QHk
÷'O£sè'uÍ6•ƒbø‰b:,lyôœŸyWa9[ÔL؃- Ë°hyÐÄÄÄÐÐÄÙ³³³³³³³³V V​​ V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V ¶}úNcÒÒM¡~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ b
$ b

请帮助我的代码错误,您的帮助将不胜感激。

解决方案

将获得与你的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,像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',
'原产地: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 =(直接)| utmccn =(直接)| 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;)); //用于显示html标签
echo($ body);

在您的代码中,您没有在结束时关闭pre / p>

  $ curl_connection 


$ b b

应为

  $ curl_handle 


I am working on curl to get Zipcode within a radius i wrote curl for this and it is working fine in Shell but when i converted it in PHP i am getting encoded response. My code is below

php code is

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

Response is some thing like

‹Å—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ÝŽ:סC@x©B9ËÜÂ[ÈUÎS>Ä!¬µ\kx©ÔSÂ/vÔ«X-Aò6Ön;)íè(é6³ô„lVUê­-!äi'dXŵE>7ðÆϦe¦:LcÆ¥‹Ã©ÄA/1Wø.Te}Š¢/R·HÔÜGá¤QŠ!›"ÖÏftêO"ʽц¡ jV-M‹NˆWCÃÿC[†V«N; Mx-´dhDÇãÉ ´6{}:‹EY>Ui«zo"¶Díì()‰3±U¼LUìÍtŒI)ÜñÖJ°­·ƒ1Ï ©¥—ÜT-d›†§©(æåsS›EQ‡½©,.¼Ò[HÛÅè–zÊ!zH1GiJ;êšœ|ÚœÅ",·LËÐì_¦gHmÝ2•4-rÉW¦ÃËÔÜPM‡/hmk›è<­æ,…k ìtn"@œç¤u¹Æ"–áÌúªjؘXtÞØ®‘èsóìý€À$µ‚><ø<=Ë|i?äáN‚æNJÓq… õ7cS‘¦\Ùül2;QHk ÷’ö£sè‘uÍ6•ƒbø‰B;‚lyôœŸyWa9[ÔL؃–ˬ°hyïÐDjowÄ*Ðö5ˆ‘Û¤Ùå:Ùº³© %y$ë‹yhÒæ½½„Ež¯Tç®Øé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

Please help whats wrong with my code,Your Help would be appreciated.

解决方案

You will get same output as in your shell script with something like that :

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

In your code, you didn't close your "pre" tag at then end, also,

$curl_connection

should be

$curl_handle

这篇关于以编码形式获取curl响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆