2010-11-29 9 views
0

クライアントの設定は簡単です。PERLによる自動フォーム提出 - デバッグ!

Page Aには、クエリ結果を表示するページBに送信するフォームがあります。残念ながら、データを取得するための他のAPIやDBアクセスはありません。

このクエリを頻繁に実行する必要があるため、この提出をPerlで自動化することにしました。

ページAのフォームキー値のペアをスニッファと判断し、コードを複製しました。しかし、プログラムBを実行すると、追加の意味のある説明なしでHTTP 500エラーがスローされます。

このコードをデバッグするためのポインタはありますか?自身のコードは単純です:

 
use strict; 
    use warnings; 
    use LWP; 
    my $browser = LWP::UserAgent->new; 

    my $url = "targeturl.asp" 
    my $response = $browser->post($url, 
    [ 
    "HisSort" => "1", 
    "RTsort" => "", 
    "chkHisRun" => "on", 
    "chkRTRun" => "on", 
    "optAdHoc" => "on", 
    "optHist" => "", 
    "optServer" => "servername", 
    "optStatus" => "", 
    "optWhat" => "H", 
    "txtEnd" => "", 
    "txtFields" => "1,0,10,17,11,18,24,19,21,25,1", 
    "txtHEnd" => "11/3/2010", 
    "txtHStart" => "11/1/2010", 
    "txtServer" => "", 
    "txtStart" => "", 
    ] 
); 

注: 私は、ページAまたはページBのソース

+0

完全なURLを入力してください。 – Benoit

+0

同じリクエストを送信していた場合は、同じ応答が返されます。したがって、あなたの要求がブラウザのどこと異なるかを知る必要があります。たとえば、クッキーはありますか?あなたのPerlスクリプトは、ブラウザに一致するヘッダーを設定しようとしていないようです。おそらく、ページBがUser-Agentを解析できません。 –

+0

また、UserAgent文字列($ browser-> agent( "..."))または以前に受信したクッキー... – gangabass

答えて

0

チーム これは解決されました。 それは最終的に、問題はヘッダーではなく、私が送信していたキー値のペアであることが判明しました。ページBはフィールドで検証を行っておらず、それらをフィールドに直接差し込んでいました。

私はページBが期待していたものに到達するために(ページAでテストして)何らかの強引な組み合わせを試さなければなりませんでした。

ボランティアをしてくれた皆様に感謝します。

1

へのアクセスを持っていない第一に、私は、LWPの周りの友好のラッパーであるWWW::Mechanizeを見てお勧めします。第2に、HTTPクライアントが500のエラーを受け取っている場合、Webサーバーのエラーログに意味のある何かがあるはずです。最後に、マシューが言及したように、ブラウザーから送られてきた要求を綿密に調べて、Perlプログラムが送信している要求とどのように異なるかを調べる必要があります。

+0

Matthew/Davorg - あなたの入力に感謝します。私はサーバーにインストールできるものに拘束されていますが、Mechanizeが既に存在するかどうかを確認します。私は、Bが何を期待しているかを理解することに目を閉じています。とにかくAの出力のヘッダーを見るためにAとBの間に何かを入れることはできますか?私が遭遇したすべてのスニッファのページは、ウェブページを取ってそのヘッダーを表示するような状況の下で、私をあまり助けてくれないようです。 – deepakkt

+0

BにトラフィックをスヌープするためにどこにでもWiresharkをインストールできますか? –

関連する問題