我正在尝试将3D Secure整合到我客户的电子商店中。 我需要将一些数据发布到3DGate并从中获取返回的结果。
我已经使用了WebRequest,我已经成功发布了数据,但返回的数据是一个Html文本,其中有一个表单和表单中的一些输入。我需要读取像Request.Form.Get("HashParams")
这样的值,但由于只是一个字符串,我无法做到。
有什么办法可以获得这些表格价值。
我在btnPayment_Click事件中执行此WebRequest
谢谢
答案 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>
我需要获取隐藏的输入