Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis en train de tester Zend_Http_Client et je rencontre un problème.
J'essaye de récupérer le contenu de pages externes. Pour certaines comme google.com, cela fonctionne sans problème mais pour d'autres comme par exemple allocine.fr le résultat est comme chiffré.
Mon code est le suivant :
<? ini_set('display_errors', 1); set_include_path(implode(PATH_SEPARATOR, array( realpath('zf/library'), get_include_path(), ))); include("zf/library/Zend/Http/Client.php"); $config = array( 'adapter' => 'Zend_Http_Client_Adapter_Socket', 'useragent' => 'Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6', 'maxredirects' => 5, 'timeout' => 30 ); // Instantie un objet client //$client = new Zend_Http_Client('http://www.google.com', $config); //Marche :-) $client = new Zend_Http_Client('http://www.allocine.fr', $config); //Marche pas... :-( $response = $client->request(); echo $response; //Récupérer le titre de la page $txt = $response; $resultat = preg_match('#<title>(.+)</title>#', $txt, $articles); if($resultat > 0){ echo $articles[1]; }else{ echo "Pas de titre..."; } ?>
et le résultat affiché est le suivant avec allocine.fr :
HTTP/1.1 200 OK Date: Tue, 26 Oct 2010 06:59:48 GMT Expires: -1 Cache-control: private, max-age=0 Content-type: text/html; charset=UTF-8 Set-cookie: PREF=ID=fc87b8bb647eda69:FF=0:TM=1288076388:LM=1288076388:S=qcmvueOxgs4B1B-L; expires=Thu, 25-Oct-2012 06:59:48 GMT; path=/; domain=.google.ch Set-cookie: NID=40=oYj_urR90hSB3AyUsKPm-diXGc8FrttxKr2avLTQqViM3sRlgn3awbZBpgGFMG0BcOhEoD9-Li7ei098piqw-_9tnOuis1bcQfEHENzcPPd87q7TGXnw3mnR0Sa9Al5-; expires=Wed, 27-Apr-2011 06:59:48 GMT; path=/; domain=.google.ch; HttpOnly Content-encoding: gzip Server: gws Content-length: 5329 X-xss-protection: 1; mode=block Connection: close ‹�����ÿµ;ÙvÛ8²ïù š¹‘Ä1M-ÞES9Ž³¹³õtÜ«Ûã’ ‹›IJ^dýÉ<ÞsîOÌ[ÿØŠ”ä83çÞ8&‰P¨*ÔøhÃMœâ.¥JPDáè¨|R⎎"Z¨.Ò-z=aSKu’¸ q±…ýU¥,YjAo‹.4' YNëç³·[êè¨`EHGï’ÄéQW”Žr'ci1ºa±›Ü>o´fã7§Cõ ÷÷ïÎ>Ÿ¼?Í·÷¶þNþˆþˆý“U¿ùíGhìímï냽Ãà >ØïlÃsp° í'_O‡3ú ”= Þ¦ìñ¡s= ‡Þ$v –Äm6×SâÓ¯)`¾ç0÷û CÕ¥ª^°ˆÖ;f´˜dq'¦7Êkè¬>-Î OG›ëaâ/ºÚº«;ÚlJ2…XØý4‚tj Úè¾E ÐÑ1“IL³,ɬ~† qű“¬°j¸4¤Uüsïb®i&¾-b:–óð v}_z;/ pÓb-¹ioª-À©›.|Ý߇@Á(8Þ0wžÁx±¼Í>,Äž_è!öô+à@<ìë j•ã½Ð*² ëô[ ö0L‚ F@ò Õj7,$·=nëiˆ³FÌšÃÃØ ëgIÚ4,†³ùÜìÔ&ñ’¬ƒ¤užîÀêÏU⪺j;ðHñ—À㫯âà96ç©ÏÛ[ì‰í÷÷êŹ»¹yaj‹©Hµ «sra®óÊHC# äAçœè$ó'ìŸüB›ÏµŽ£ÁC3Ÿ5v…‘Ç–zCí UÍfò#Ër8ƒEçÉŠáZazÙݬ -,YQØonšÅ$lµVë”ö3@m¬p‚Îv@ÔUž—c†Vß|vÔ-·÷Q^Ü…Ta®åó¯‘ ¸w³–ÍâaoþÜOüYJ\—Åþp;½Uà·7/ÜYÈbºPæÅÐ8 ÑÜð‰s)KMýýôv¼ J˜[vRI4ô çÒW'zªˆ�h- D,¼’Œ‘PÏIœoå4cÞÚ $L²áóí=gn\ËR¯¥"Çy%ž=¬˜Á6si¶ÝB’æt(?æ43Ýí$tM^Á 0ŒYÎ 0/€nw÷�Y`& dÍ.ÐaÎâtR4°fq�Èsbøv_Çç€?·ùsGâÜï;Ê‹RP$.‘mâŒý,™Äîð¹çyPi“LîO`ùbŽœÝÓa˜`–Ý*’t؆4`Á°™WCêfɇÁ�.¡Éá%+öL´[$d~<Ìp(0Ötx¸’¤rÚ< ™«ÙÁí—Û¡3«ë‰]YtlÊc l€À€¸®©mk@ËD½hÛ Ñ TŠèýå=åÀ6:<<,P”ziì€ÙÀ‡ÏPŸ`’… .C_+ïæYšuc2½Ï,éïiìkŠ -Çt؇u*ËÆC¢ÇwSµEz¦3ÉrøNb›5P’ÐL&¾@ æ °Ô7@TŽªÞ:I` Ü€½Ä™ä3 ƒË•á¡þÜQ å,JŸ«g`WHb*S¦lse ¦uª¸lZ±N€õâ…ÞvÑdoMRÁès/]{t·.ý«›Ð’œ)½!¬Ÿ8áíÚïeõ®¿xpò4“y{dõ¤S\ë–Oì¼È` {³Ï;v;ÿxhi×V×(h^€Öj‘4ËÚê·Z¢ú·Aç¿à«ê¯ÍüŒÂêÚQ»9%™¼T7IU)F{©uþ ÖÅߺ¾®ªZé.€°pö•þ|^~õæõ%§°â Né7•«áî¢ ©¨çÂoÎvpœ¾ÛëisóYékÝY³¹Y~ß.\Lˆ*/óîœÌ½°Î¡òBâ呤ÖFÃyÓ–¢°ù’ŸédѺJfõd Žëxxº¯ õP·õH›Át^r7×ûL2”ÆNâÒŸ:=I@Šbèðð@s‡¤Twj!P`̼¹¹ŠâypA‰³Œœ*0r¾ƒƒ _«e×D§ïi~´ræ,U³«ÏM¦Å˜è\í‚:y™ëâøßr ŽÒI'Ôté'·Z‹@À{ ®™5P‡¼÷”Šî‘¦ShX�üéÐ…�>7þÖE©ÓUn¢ ¾¼R5†2€òh k_W ’:�DŠ)¼aøxÖìÆ»E-V¥‚ƒ‰5cî° ýÛsC,¦°X¡ZrÎ., JJ;‰^…`„Qø âLáBW$Ð?PlŸëR "úhF-T¬ðO…7ÐýSQZ!¢äy¼c)*?å ³•LzƵÁ)DI"º åñ]²,¶•Hv4Îîö7ìF[UFGˆ2É(Á�Èə¤UW²°dÙ©Rœ0óQB‰bpƵÚÂm׈ȼŒDT‰áaÝøWÞšiD_U+êTó… kÅZTÊU@U@n®fpžZX£ÿ Cœ€þ;C¾ƒtõîÁwM §$ÆÞañèŒ R…üÉRâ/¾AdGGqbÃÓVœ ä9ÔõG¿Rû¨k ”#¢ e²TÌ• »Ý››…N @Nü }„–K[±A¡!• 9cÙ¸Î;EÀrùÁ«8ê’UàSæÒ¤¾yú4ä_px¾r1l 0ëÀç ‚!kAÃŽoò&Iâ§akaÛI2®·ÇKÀÓï ÷_ÿ±YOp’°ŸD¼Ü z¤Ö ‰T§ò :…¶$qv]ÚMRÔŽyw ©Š(v8É:š)u& ‚2¨\ ¾ÊýÑ-p$Ò$ ¤<‰Vá²=:šŒ>Ñ�V5<òˆ„á¨õüpo¯‡ ƒE.årP$ä –ñ.2ðyCRÐGDïì)"FýÓ¦˜¾„ÐàTúÂïzdûé9^!Œï <¨ Shuð¿? “¾“|’º@ˆrš:õMb‚6éBY>¿ ˆ¸ÿ4vI¨a$YGÌQk3|àý!a QDNn¨][j 4—yýô2ß&Å#:,R^Ǻ8©£yÊVi‘(5•3bÓ þ>¶ÀÒPïêPâíka¼þ(jÛu _Yż%d5t Ÿ¥M]â?M¼wÈÿ¡p¬S *qâJ[]ieäz’˜bö¾0\¢ -fëž ³0A&›4Œ¾WS€.èb}½Õ«Z½5t±é§ËÌo¥SZÛkkýJýÛoƒðÅök—¾ìåÉ$s(”˜Ž[“Ü·Žßþýêäó» ¯÷þ¸Üýpæm½~úñÃôëÁVb¾%ɇãqvFLž<9‰i…âDa¿9´´tõ±_'`Xœ ¼“Ø/å÷¡)4ùêF&Ž¡z‘w?& —ƒé+OèúUק=Ž# Ɵ϶Ê;Ù/(]‘¾üV‘ýé5¥ ?•#‡bvbÁ:t3GU 0ÐÇX l ýtá…~i9Ä,ªL+xsªhç) Ž§ìº’€Aé¦ñ%¯îTs‡úF$bâdbJª¬s¿ß«R¼ƒý=˜N᧋–*X®r$Båç–N˜„x¬r¯Œ“›Œ¤¹2‡³¿¿_ÏOíÉtU=³Ïi?èc’¬Jgl$›Š,ô~©ðÕ `Ôý*ý ¬Åc…ðÉ’ÉUxñ°Á@ó€KဖT¶z¼lsx ºdÊTP&†¢[nîÁî‹Q+¶óTBáòÑM0¹\<Ä ˜t¡‚ç»–.,ˆK}ľ\Ó/¨`ÕÛø›Ý|£-¨K¯›KvÈÄÙ`‘8ÛAS%(2)œãyKM±#VH²5iY ^òg¡ÑS×ê«•Ù¨[‰Ã“(œ®Cáxâ)>tz‚7?ÞøO° {¤Ô Õªk1óÝ5KBÜ)3â^–‰CaMFo2Øú°Ï ªpÊp¥^ ÂŒìôÝe‘$¡´@£¯i1¬0õÒ Zà‚ãu¼Qc4ðB[l¿0#KoãA *´M©¼I˜£Î‰!ë[}^)RÄeDR DA a“‚Ä=á¹ _ Ö4™3PH—ïüÕÛÍí=ýáòt/Ê>ý¶ûËåmxzzïXÜ+„ÅÒû!˃ïp ÿƒ ¼Ly·üõ?„}OPðLÁ utZ€t 8ùÿ™!Þý4‰xN ¤9'ø¹° ÷.£yU/¹ p¥²õ^’ðúÒ` Sd ˆÛBÀã CÙ¥TGýCT^ Š•ê«~€*æPk¢/=Zâ‚7;ú•f6Hîå…ö¦³ L /©"˜\×{}t;0ý»ªŒ©Êšè5h¸â ìáOÍ8@Z€G—Þ™Ê ×ï)[Ê*®iƦĹ+±Å1ðoRÜ‹ùÒ5œ©8$ryK§Êl£Ó¸ £´Zò,EÃïåsÌyu#¥aÍ~YÇI†çmžîjëmôùà%Ä>n¯rÖ¾ÐSÑ3χUҧś âç«»S·Ó×:ÚšÁâ˜fïÏ>}Ô1¡6l/eÔ8YÛÊf{ÉÏëm4H¡\Ó„xU õ¼ñ2¹nÄa&©aŒU¡ï@pYÐr ¶ÖÖLèTft)¿ñré„ÌݽÞÝ'Nïp¯ßówŒ«¼mv¥€qÛšòð 4²¶šAÒö“€…n:i œ·” ’bN*3¶ªL^*ühQ)7˜y0ö¦R9œJåqªÂ0yÄÅ_WdJÄdÃiÂÜNOS+¿F+½¥ƒ`sõ²ŒIyÞ¹Ø<ƒôøý uôžŸ}úxN6,^ùë¿1o×6\¹j$Ýj[“¿Óä‡á±,/¬óóÉV™úGâË327/2l.‹zX,c„ÚVª \ˆƒ«GäI¸ªòŠœ*¥é*ïzÝÿ‡ñ? žü>ð³Oo~Þ9>¹É>½MÄûxG¼_9â}R¾_ß”ýÞ”ý ÿ›c÷ãI~óöÊ?Æ÷»3ñþáìêGvü&ÿp|ýå8Çwöå/÷¿ÃûÕqù~U¾?9Nðý¥,Ÿ•ïŸÅûØ-ß¿—ïßþñéoããÓ ûõ'·v %=ö…úø¾P‘¹ªöðð ]A´ÅŶê¤L áŒB[W‰| skÝÍ7s®ƒ |¶à¿ÕŸ×9ú¬RÐ+Ñ«LS£K~¦¬Õ?'½Þö <ÅF]^÷æ- Bš Eáˆzå5¸ù(£ð'1xÊ)¸6ÊqìñÄÊ$ö•˜9f‚rï¯A[l(¿€yÀx;V¾2ªÐýýíÀã5½X$Ì sà ‘ÑeÁR@ïî¡rPÀh¦+“Hªns4j�Ñ¥qÞ·£Š<.tB(K-r|]{¨=¼õ~Áæ¦k‹<<”$ä«¥æ%F¾6-¸'WêØ™ŽhÜÖ°uʧ®¤Yäƒ ²-fˆD¤éZ=Sþ•¦Ñ¼:²‹+m6¶ØùWècC&2JGdŒ€Õ· Ô‡‡ ^£!þÒð âºKÌX“œ$'Öu)Éø,hðzkøpÅ:>� æÿB~Bá`m¬uëJ5½Ö»KÂõ,\Û™E¡åÉ&ü› ¨q,w©&¶ì¥šÔ¢ë‚ÏXm:0eIV,;«Ãôl L)d+lz¤^²*”¬’œ–ý4×V« !RšVgýÆФ‰©ôÄÿGÀËê 6��Pas de titre...
Avez-vous une idée d'où peut venir le problème et comment le résoudre?
Merci d'avance pour votre précieuse aide.
Hors ligne
Salut,
à vue d'œil, il semblerait que Zend_Http_Client n'arrive pas à décompresser la page...
Rajoute dans ta config :
$config = array( 'adapter' => 'Zend_Http_Client_Adapter_Socket', 'useragent' => 'Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6', 'maxredirects' => 5, 'timeout' => 30, 'accept-encoding' => false );
et vois ce que ça donne...
Hors ligne
Au temps pour moi, il faut le setter pour le supprimer ! Avant de lancer la requête fait :
$client->setHeaders('accept-encoding');
Hors ligne
J'ai essayé de rajouter
'accept-encoding' => false
et
$client->setHeaders('accept-encoding');
mais le problème reste le même...
Hors ligne
Personnellement, avec ton code, j'ai le même problème que ce soit avec Google ou AlloCiné.
En supprimant ta config, Google fonctionne mais pas AlloCiné (d'ailleurs, en supprimant uniquement ton "useragent", Google fonctionne)
Je fais d'autres essais et te tiens au jus (si tu n'as pas trouvé avant)
@+
Hors ligne
Effectivement, à force de faire des essais avec et sans config, je n'ai même pas remarqué que Google ne s'affichait pas correctement...
Merci pour ton aide
Je continu également à chercher de mon coté
Hors ligne
Avec
echo $response->getBody();
ça fonctionne!
Hors ligne
Effectivement !!
Zend_Http_Response::getBody() :
/** * Get the response body as string * * This method returns the body of the HTTP response (the content), as it * should be in it's readable version - that is, after decoding it (if it * was decoded), deflating it (if it was gzip compressed), etc. * * If you want to get the raw body (as transfered on wire) use * $this->getRawBody() instead. * * @return string */ public function getBody() { $body = ''; // Decode the body if it was transfer-encoded switch (strtolower($this->getHeader('transfer-encoding'))) { // Handle chunked body case 'chunked': $body = self::decodeChunkedBody($this->body); break; // No transfer encoding, or unknown encoding extension: // return body as is default: $body = $this->body; break; } // Decode any content-encoding (gzip or deflate) if needed switch (strtolower($this->getHeader('content-encoding'))) { // Handle gzip encoding case 'gzip': $body = self::decodeGzip($body); break; // Handle deflate encoding case 'deflate': $body = self::decodeDeflate($body); break; default: break; } return $body; }
Hors ligne
Pages: 1