Ben Flash Builder 4 HTTPService gelen o bir parametre göndermek kadar PHP komut dosyası çalışıyor?

1 Cevap php

Benim Flex 4 app bir RSS beslemesi okumak için bir PHP komut dosyası kullanıyorum. Komut Ben gerçek komut yem URL'sini koymak çalışır, ama ben Flex'te bir HTTPService bir parametre olarak URL'yi göndermek çalıştığınızda bu işe alınamıyor.

İşte kullanıyorum Flex 4 HTTPService olduğunu:

<mx:HTTPService url="http://talk.6te.net/proxy.php"
          id="proxyService" method="POST" 
          result="rssResult()" fault="rssFault()">
 <mx:request>
  <url>
       http://feeds.feedburner.com/nah_right
  </url>
 </mx:request>
</mx:HTTPService>

Bu çalışır betik:

<?php
$ch = curl_init();
$timeout = 30;
$userAgent = $_SERVER['HTTP_USER_AGENT'];

curl_setopt($ch, CURLOPT_URL, "http://feeds.feedburner.com/nah_right");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);

$response = curl_exec($ch);    

if (curl_errno($ch)) {
    echo curl_error($ch);
} else {
    curl_close($ch);
    echo $response;
}
?>

Ama bu aslında kullanmak istediklerini, ama (sadece hat 6 farklı) çalışmıyor:

<?php
$ch = curl_init();
$timeout = 30;
$userAgent = $_SERVER['HTTP_USER_AGENT'];

curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);

$response = curl_exec($ch);    

if (curl_errno($ch)) {
    echo curl_error($ch);
} else {
    curl_close($ch);
    echo $response;
}
?>

İşte (çalışmıyor PHP komut dosyası kullanarak) Flash Builder 4 ağ monitörden HTTPService bir istek ve yanıt çıktı:

İstek:

POST /proxy.php HTTP/1.1
Host: talk.6te.net
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Content-type: application/x-www-form-urlencoded
Content-length: 97

url=%0A%09%09%09%09%09http%3A%2F%2Ffeeds%2Efeedburner%2Ecom%2Fnah%5Fright%0A%20%20%20%20%09%09%09

Yanıt:

HTTP/1.1 200 OK
Date: Mon, 10 May 2010 03:23:27 GMT
Server: Apache
X-Powered-By: PHP/5.2.13
Content-Length: 15
Content-Type: text/html

<url> malformed

Ben HTTPService in "" in URL koyarak denedim, ama bu bir şey yapmadım. Herhangi bir yardım büyük mutluluk duyacağız!

1 Cevap

Sadece sorgu dizesi urlkodçözümü aksine $ _REQUEST ['url'] değeri urlencoded ediliyor. Yere kodu ve / veya FLEX hizmetinde bir "çifte urlencode" neden oluyor. Sadece url kodunu çözmek ve size gereken değeri almalısınız. Siz de onu kırpmak isteyebilirsiniz böylece Ayrıca, ben çizgi beslemeleri ve sekmeleri fark ettim.

<?php
$ch = curl_init();
$timeout = 30;
$userAgent = $_SERVER['HTTP_USER_AGENT'];

curl_setopt($ch, CURLOPT_URL, trim(urldecode($_REQUEST['url'])));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);

$response = curl_exec($ch);    

if (curl_errno($ch)) {
    echo curl_error($ch);
} else {
    curl_close($ch);
    echo $response;
}
?>

İşte bu.