如何在asp.net中读取从WebRequest返回的数据?

时间:2009-03-27 22:07:51

标签: c# .net asp.net httpwebrequest

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

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

有什么办法可以获得这些表格价值。

我在btnPayment_Click事件中执行此WebRequest

谢谢

3 个答案:

答案 0 :(得分:1)

我相信madcolor正在考虑一个不同的场景;你在服务器上创建一个全新的webrequest,这意味着没有请求参数;你正在处理一个回应。实际上,您已成为Web浏览器,您必须自己进行解析。

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

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

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

理想情况下,会有一个基于非HTML版本的电子商店,所以你会知道你正在使用有效的XML / JSON /无论如何,但如果没有替代方案,你就会被剥夺数据自己。

答案 1 :(得分:0)

我无法看到解析从WebRequest返回的HTML的方法。如果你很幸运,它可能是有效的XML。否则,您将不得不进行自己的字符串解析或使用其他HTML解析器之一。

答案 2 :(得分: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>

我需要获取隐藏的输入