2011-02-19 10 views
0

ASP.NETページにajaxクエリを送信しようとしています。ASP.NET CurlとASP.NETのajaxクエリ

アルゴリズム:

define('POSTURL', 'http://nakolesah.ru/'); 
define('POSTVARS', 'ctl00%24sm=ctl00%24contentPlaceHolder%24upnlFilterAuto%7Cctl00%24contentPlaceHolder%24ddlSizeVendorsAuto&__EVENTTARGET=ctl00%24contentPlaceHolder%24ddlSize... 

$ch = curl_init(POSTURL); 
curl_setopt($ch, CURLOPT_POST  ,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS ,POSTVARS); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_HEADER  ,0); // DO NOT RETURN HTTP HEADERS 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); // RETURN THE CONTENTS OF THE CALL 
curl_setopt($ch, CURLOPT_REFERER, POSTURL); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Requested-With: XMLHttpRequest', 'X-MicrosoftAjax: Delta=true', 'Host: nakolesah.ru', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Content-Type: application/x-www-form-urlencoded; charset=utf-8', 'Connection: keep-alive')); 
$Rec_Data = curl_exec($ch); 
echo $Rec_Data; 
die(); 

(リクエストは、Ajaxリクエストを模倣する必要があります。

1. I have form on my page; 
2. When user filled all fields he clicks submit button; 
3. When submit button is clicked js send ajax request to page on my server (test.php) 
4. test.php sends request to page on other server (ASP.NET). (page results in text/palin if right post fields was sended) 
5. test.php echo result and js callback alert this result; 
私は私のクライアント側のコードが完全に機能していることを知っている

が、サーバサイド... これは、サーバー側のコードがあります)

結果:

1 |#|| 4 | 58 | pageRedirect ||%2fGenericErrorPage.aspx%3faspxerrorpath%3d%2fDefault.aspx |

これはエラーのようですが、cozの正常な結果には、html-listのようなものが必要です。

httpfoxの助けを借りてPOSTとヘッダデータをコピーしました。

は、私は絶対にしようとした私のブラウザのクッキーがオフだったとき、私のブラウザを模倣:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: nakolesah.ru', 
               'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; uk; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 WebMoney Advisor', 
               'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
               'Accept-Language: uk,ru;q=0.8,en-us;q=0.5,en;q=0.3', 
               'Accept-Encoding: gzip,deflate', 
               'Accept-Charset: UTF-8,*', 
               'Keep-Alive: 115', 
               'Connection: keep-alive', 
               'X-Requested-With: XMLHttpRequest', 
               'X-MicrosoftAjax: Delta=true', 
               'Cache-Control: no-cache, no-cache', 
               'Content-Type: application/x-www-form-urlencoded; charset=utf-8', 
               'Pragma: no-cache')); 

そしてそれはの助けを借りて、ASP.NETページにAJAX要求を送信することについて:(

任意のアイデアを働いていないですPHP CURL?

答えて

0

Asp.NetページまたはAsp.Net Webサービスへのリクエストの送信は問題ありません。そこでは許可されていますが、私はあなたにはupdatepanelのhtmlコンテンツを取得したいと思うようです。 asp net updatepanelsのセキュリティは破壊されませんが、絶対に他のウェブサイトからコピーするようには設計されていません。私は試みたことはありませんでしたが、私はあなたの目標に到達しないと思います。 Asp netは暗号化されたviewstateを生成しており、ajaxリクエストではこのviewstateを使用してリクエストを検証します。このviewstateフィールドを再現することはできません。このフィールドは、updatepanelを動作させるために必要です。

+0

私は私の目標に達しています:) Yahooo私はとても幸せです! POST変数にパラメータに関する問題がありました。 – Mirgorod

+0

ああ、これは間違っていたと思っていた:(しかし、どこでaspがeventstateとeventvalidationを生成するのかFirebugの助けを借りて私はeventstateとeventvalidationの値を取得するが、この値はフォームとポスト変数で異なる... – Mirgorod

+0

Viewstateは、それはBase64でエンコードされています。ここでviewstateをデコードすることができます:http://ignatu.co.uk/ViewStateDecoder.aspx –