【问题标题】:How to read the data returned from WebRequest in asp.net?如何在asp.net中读取WebRequest返回的数据?
【发布时间】:2009-03-28 06:25:29
【问题描述】:

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

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

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

我正在 btnPayment_Click 事件中执行此 WebRequest

谢谢

【问题讨论】:

  • 我用 RemotePost 做到了。这是一个自定义的书面课程,但是您可以自己编写。只需在 Google“RemotePost”上搜索即可。

标签: c# .net asp.net httpwebrequest


【解决方案1】:

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

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

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

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

理想情况下,应该有一个非 HTML 版本的电子商店,因此您会知道您正在使用有效的 XML/JSON/其他任何东西,但如果没有其他选择,您将无法获取数据自己。

【讨论】:

  • 我已经发布了xhtml,请你看一下
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    这是返回的数据...

    <!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>
    

    我需要得到那些隐藏的输入

    【讨论】:

    • 使用这个正则表达式: 这只会给你隐藏类型的输入,而第一组将具有价值。
    • (标记者注意——这是一个非常古老的问题,在 cmets 和(可能)编辑之前)
    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多