0

我正在尝试将 3D Secure 集成到我客户的电子商店。我需要将一些数据发布到 3DGate 并从中获取返回的结果。

我为此使用了 WebRequest,我已经成功发布了数据,但返回的数据是一个 Html 文本,其中包含一个表单和表单中的一些输入。我需要读取这些值,Request.Form.Get("HashParams")但由于只是一个字符串,我无法做到。

有什么方法可以让我获得这些表单值。

我在 btnPayment_Click 事件中执行此 WebRequest

谢谢

4

3 回答 3

1

我相信 madcolor 正在考虑不同的情况。您正在服务器上进行全新的 webrequest,这意味着没有请求参数;你正在处理一个响应。从本质上讲,您已经成为网络浏览器,您必须自己进行解析。

由于您使用的电子商店是专为浏览器设计的应用程序,因此您必须处理该格式固有的限制。您本质上受制于“屏幕抓取”技术,因为服务器不会将响应中的文本视为除此之外的任何其他内容:纯文本。

如果您正在处理有效的 XHTML,您可以将其加载到 XmlDocument 中,并使用 XPath/XQuery 提取值。

如果您正在处理标准糟糕的 HTML,您将不得不求助于一些解析;我会为此建议一个正则表达式。

理想情况下,将有一个非 HTML 版本的电子商店,因此您会知道您正在使用有效的 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 回答