0

3Dセキュアを顧客のeショップに統合しようとしています。3DGateにデータを投稿し、そこから返された結果を取得する必要があります。

これにWebRequestを使用しました。データを正常に投稿しましたが、返されるデータは、フォームとフォームへの入力を含むHtmlテキストです。私はこれらの値を次のように読み取る必要がありますRequest.Form.Get("HashParams")が、単なる文字列であるため、それを行うことができませんでした。

これらのフォーム値を取得する方法はありますか?

私はbtnPayment_ClickイベントでこのWebRequestを実行しています

ありがとう

4

3 に答える 3

1

Madcolor は別のシナリオを考えていると思います。サーバー上でまったく新しい Web リクエストを作成しています。つまり、リクエスト パラメータはありません。あなたは応答を扱っています。基本的に、あなたは Web ブラウザーになり、自分で解析を行う必要があります。

使用している e ストアはブラウザー用に設計されたアプリであるため、その形式に固有の制限に対処する必要があります。サーバーは応答からのテキストをプレーンテキスト以外のものと見なさないため、本質的に「スクリーンスクレイピング」手法に縛られています。

有効な XHTML を扱っている場合は、それを XmlDocument に読み込み、XPath/XQuery を使用して値を引き出すことができます。

標準のくだらない HTML を扱っている場合は、何らかの解析を行う必要があります。これには正規表現をお勧めします。

理想的には、非 HTML ベースのバージョンの e ショップがあれば、有効な XML/JSON などを使用していることがわかりますが、代替手段がない場合は、データを自分で取り出さなければならないことになります。

于 2009-03-27T22:18:00.063 に答える
0

WebRequest から返される HTML を解析する必要があることを回避する方法がわかりません。運が良ければ、有効な XML である可能性があります。それ以外の場合は、独自の文字列解析を行うか、他の HTML パーサーのいずれかを使用する必要があります。

于 2009-03-27T22:19:34.240 に答える
0

これが返されたデータです...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- gateerr_en.htm -->
<html>
<head>
<script type="text/javascript" language="javascript">
function moveWindow() {
  document.returnform.submit();
}
</script>  
</head>

<body onLoad="javascript:moveWindow()">
<form action="urlHere" method="post" name="returnform">

    <input type="hidden" name="clientid" value="xxx">
    <input type="hidden" name="oid" value="">

    <input type="hidden" name="mdStatus" value="7">
    <input type="hidden" name="mdErrorMsg" value="Tanimlanamayan">

    <input type="hidden" name="ErrMsg" value="Tanimlanamayan">
    <input type="hidden" name="Response" value="Error">
    <input type="hidden" name="ProcReturnCode" value="99">  


    <!-- To support javascript unaware/disabled browsers -->
    <noscript>
        <center>
        An Error Occurred, Please Click to continue.<br>
        <input type="submit"  value="Submit"></center>
    </noscript> 
</form>
</body>
</html>

私はそれらの隠された入力を取得する必要があります

于 2009-03-27T22:25:29.250 に答える