2012-01-24 23 views
0

OK ...私は戦略的パートナーのサイトにXMLページを投稿して、計算をして応答コードを返しますXMLを介して。Perl LWP :: UserAgentをXMLに使用して、ユーザー名とパスワードを入力する必要があります。

私は、庭園のさまざまなPERLを使用していますが、これを行うにはLWP :: UserAgentを使用しようとしていました。もっとエレガントな方法があれば、その方向を教えてください。

私は自分のサーバーにヒットしてコードを取得できますが、予想されるユーザー名とパスワードが正しくないため、サーバーへのアクセスが拒否されます。ユーザー名とパスワードは実際のXMLコードでは指定されていませんが、実際のP​​OSTメソッドの一部としてサーバーに渡されるはずです...しかし、私はそれを行う手掛かりがありません。

生成されます彼のXML 、彼のユーザ名/パスワードの組み合わせでYOUR_XML_FILE、YOUR_USERおよびyour_passwordにを置き換える:

パートナーは、以下のフィードバックを提供します。この は、彼のperlスクリプトがあるサーバーから実行する必要があります。

のwget --no-チェック証明書--post-ファイルYOUR_XML_FILE https://previewtest.clverify.com/webservice/exec -O previewsamplerequest.response.xml --http-ユーザー= YOUR_USER --http-パスワード= your_passwordに

Iこれが生成されるはずの場所やLWP :: UserAgentのオプションが何を指定するのかはわかりません。誰もこれを前にしたことがありますか?

sub ConsumerInfo { 
my $cid = shift; 

my $response = undef; 
my $sendXML = &Create_ConsumerInfo_Request($cid); 
if ($sendXML) { 
    &DoXMLUpload($sendXML); 

    my $browser = LWP::UserAgent->new(agent => 'perl post'); 
    $browser->credentials('','','username','[email protected]'); 
    $response = $browser->request(POST 'https://previewtest.clverify.com/webservice/exec', 
     Content_Type => 'text/xml', 
     Content => $sendXML); 
    print "Content-type:text/html\n\n"; 
    print $response->error_as_HTML unless $response->is_success; 
    print $response->as_string; 

} else { 
    &ErrorMsg("No XML Code Was Found."); 
    exit; 
} 
# =============================================================== 
# Need to insert parser in here to convert this into an array. 
# =============================================================== 
return $response; 
} 
+0

デュードを、エリックのように、あなたのコードスニペットからの接続仕様を削除します... – zgpmax

答えて

2

WARNING::あなたは本当のURLとパスワードを提供

は、ここに私のコードです。誰もがあなたのパートナーのサーバーに今すぐ接続できるので、これをできるだけ早く変更してください!

$ UA->資格証明書($のnetloc、$レルムは、$のuname、$パス)
するユーザー名とパスワードを設定/取得します:この私見

は、ドキュメントに記載されていますレルムに使用されます。 $ netlocは ":"という形式の文字列です。ユーザー名とパスワードはこのサーバーにのみ渡されます。

の例では、認証するための正しい方法を示しています。あなたの場合

$ua->credentials("www.example.com:80", "Some Realm", "foo", "secret");

をこれは意味します:

$browser->credentials('previewtest.clverify.com:443','yourRealm','321321','[email protected]'); 
+0

Unreal ...私はそれを取り除くことを忘れていたとは思わない。良い主よ、私は老人になっています。手伝ってくれてどうもありがとう! –

+0

$ realmにはどのような値が有効でしょうか?これは具体的には何を指していますか? –

+0

答えはApache docu:(http://httpd.apache.org/docs/1.3/howto/auth.html)です: "特に、Webサイトの保護された領域に関連付けられた名前を送信しますこれは領域または認証名と呼ばれます。クライアントブラウザは、指定したユーザー名とパスワードをキャッシュし、認証レルムと共に格納します。これにより、同じレルムから他のリソースが要求された場合、ユーザーに要求せずに同じユーザー名とパスワードを返して要求を認証できます。それらをもう一度入力してください。 – Erik

関連する問題