- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写代码以从 Stringbuilder 中提取特定值。我的想法是,我正在向 Moneris 提交一个表单 - 一个支付网关(我使用示例 key 和 ID,因此这里没有提到 secret 信息)以接收来自 Moneris 的动态生成的 key 。
请看下面我的代码:
StringBuilder sb = new StringBuilder();
sb.Append("<html>");
sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
sb.AppendFormat("<form name='form' action='{0}' method='post'>", "https://esqa.moneris.com/HPPDP/index.php");
sb.AppendFormat("<input type='hidden' name='ps_store_id' value='{0}'>", "R6SXStore3");
sb.AppendFormat("<input type='hidden' name='hpp_key' value='{0}'>", "hpZPXLXZNBLF");
sb.AppendFormat("<input type='hidden' name='charge_total' value='{0}'>", "2.00");
sb.AppendFormat("<input type='hidden' name='hpp_preload' value='{0}'>", "");
sb.AppendFormat("<input type='hidden' name='order_id' value='{0}'>", "");
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");
Response.Write(sb.ToString()); // This is submitting the above form to the moneris (third party payment website and throwing values in a kind of XML format).
请看截图https://snag.gy/OHbk6y.jpg我从 Moneris 得到了什么回应。
我有兴趣从我在上面的屏幕截图中突出显示的“票证”节点中提取值。
这是我正在编写的代码,用于从“票”节点中提取值。
XmlDocument xmlDoc = new XmlDocument();
// string myXML = @"<!--?xml version='1.0' standalone='yes'?--><html><head></head><body><response><hpp_id>R6SXStore3</hpp_id><ticket>hpp1529956212E2mefmVB93Yu2taJy</ticket><order_id></order_id><response_code>1</response_code></response></body></html>";
string myXML = sb.ToString();
xmlDoc.LoadXml(myXML);
XmlNodeList parentNode = xmlDoc.GetElementsByTagName("response");
string xticket;
string xhpp_id;
foreach (XmlNode childrenNode in parentNode)
{
HttpContext.Current.Response.Write(childrenNode.SelectSingleNode("ticket").InnerText);
}
Response.End();
错误:
当我运行上面提到的代码时,我看到了这个错误:请看截图https://snag.gy/PJMKqL.jpg
但是,当我在变量“myXML”中传递硬编码值的地方取消注释我的代码时,我得到了完美的结果。硬编码值是我在收到 Moneris 的响应时从浏览器的源代码中提取的值。
你能帮我解决这个问题吗
最佳答案
您可以使用 WebClient 来做到这一点。如果您需要,我还添加了几行代码以通过 SSL 工作。
public void test()
{
var postData = "ps_store_id=R6SXStore3";
postData += "&hpp_key=hpZPXLXZNBLF";
postData += "&charge_total=2.00";
postData += "&hpp_preload=";
postData += "&order_id=";
var encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
var myRequest = (HttpWebRequest)WebRequest.Create("https://esqa.moneris.com/HPPDP/index.php");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
//This code is to work using SSL
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
//Post the content
var newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
//Read the response
var response = myRequest.GetResponse();
var responseStream = response.GetResponseStream();
var responseReader = new StreamReader(responseStream);
var result = responseReader.ReadToEnd();
responseReader.Close();
response.Close();
//Your original code
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(result); //Load the response into the XML
XmlNodeList parentNode = xmlDoc.GetElementsByTagName("response");
string xticket;
string xhpp_id;
foreach (XmlNode childrenNode in parentNode)
{
xticket = childrenNode.SelectSingleNode("ticket").InnerText;
xhpp_id = childrenNode.SelectSingleNode("hpp_id").InnerText;
}
}
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
关于c# - 尝试从 Stringbuilder 字符串获取 XML 值 - C#(Moneris 数据预加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032616/
我需要您在以下方面提供帮助。近一个月来,我一直在阅读有关任务和异步的内容。 我想尝试在一个简单的 wep api 项目中实现我新获得的知识。我有以下方法,并且它们都按预期工作: public Htt
我的可执行 jar 中有一个模板文件 (.xls)。不需要在运行时我需要为这个文件创建 100 多个副本(稍后将唯一地附加)。用于获取 jar 文件中的资源 (template.xls)。我正在使用
我在查看网站的模型代码时对原型(prototype)有疑问。我知道这对 Javascript 中的继承很有用。 在这个例子中... define([], function () { "use
影响我性能的前三项操作是: 获取滚动条 获取偏移高度 Ext.getStyle 为了解释我的应用程序中发生了什么:我有一个网格,其中有一列在每个单元格中呈现网格。当我几乎对网格的内容做任何事情时,它运
我正在使用以下函数来获取 URL 参数。 function gup(name, url) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/,
我最近一直在使用 sysctl 来做很多事情,现在我使用 HW_MACHINE_ARCH 变量。我正在使用以下代码。请注意,当我尝试获取其他变量 HW_MACHINE 时,此代码可以完美运行。我还认为
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么
由于使用 main-bower-files 作为使用 Gulp 的编译任务的一部分,我无法使用 node_modules 中的 webpack 来require 模块code> dir 因为我会弄乱当
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我使用 Gridlayout 在一行中放置 4 个元素。首先,我有一个 JPanel,一切正常。对于行数变大并且我必须能够向下滚动的情况,我对其进行了一些更改。现在我的 JPanel 上添加了一个 J
由于以下原因,我想将 VolumeId 的值保存在变量中: #!/usr/bin/env python import boto3 import json import argparse import
我正在将 MSAL 版本 1.x 更新为 MSAL-browser 的 Angular 。所以我正在尝试从版本 1.x 迁移到 2.X.I 能够成功替换代码并且工作正常。但是我遇到了 acquireT
我知道有很多关于此的问题,例如 Getting daily averages with pandas和 How get monthly mean in pandas using groupby但我遇到
This is the query string that I am receiving in URL. Output url: /demo/analysis/test?startDate=Sat+
我正在尝试使用 javascript 中的以下代码访问 Geoserver 层 var gkvrtWmsSource =new ol.source.ImageWMS({ u
API 需要一个包含授权代码的 header 。这就是我到目前为止所拥有的: var fullUrl = 'https://api.ecobee.com/1/thermostat?json=\{"s
如何获取文件中的最后一个字符,如果是某个字符,则删除它而不将整个文件加载到内存中? 这就是我目前所拥有的。 using (var fileStream = new FileStream("file.t
我是这个社区的新手,想出了我的第一个问题。 我正在使用 JSP,我成功地创建了 JSP-Sites,它正在使用jsp:setParameter 和 jsp:getParameter 具有单个字符串。
在回答 StoreStore reordering happens when compiling C++ for x86 @Peter Cordes 写过 For Acquire/Release se
我有一个函数,我们将其命名为 X1,它返回变量 Y。该函数在操作 .on("focusout", X1) 中使用。如何获取变量Y?执行.on后X1的结果? 最佳答案 您可以更改 Y 的范围以使其位于函
我是一名优秀的程序员,十分优秀!