Asp.net 使用.net HttpWebRequest发布包含某些字段的XML数据
我在使用HttpWebRequest发布xml数据时遇到了一些问题。实际上我想发布3个表单变量 其中2个用于凭证,第三个用于将XML数据发送到api,api将进行身份验证并处理XML数据,如果未发现错误,则返回success 下面是文档中所说的内容 数据将通过HTTPS表单post传递到网关,并在成功接收数据后返回字符串值“success”。总共将发布三个表单变量,其中两个包含凭证,第三个包含HR-XML数据。如果由于任何原因过帐失败,将返回字符串值“error” 表单字段 集成\字段1=1234,集成\字段2=2345pwd,hrxml=包含HR-XML顺序(字符串)的表单字段 这是我的代码Asp.net 使用.net HttpWebRequest发布包含某些字段的XML数据,asp.net,xml,forms,post,httpwebrequest,Asp.net,Xml,Forms,Post,Httpwebrequest,我在使用HttpWebRequest发布xml数据时遇到了一些问题。实际上我想发布3个表单变量 其中2个用于凭证,第三个用于将XML数据发送到api,api将进行身份验证并处理XML数据,如果未发现错误,则返回success 下面是文档中所说的内容 数据将通过HTTPS表单post传递到网关,并在成功接收数据后返回字符串值“success”。总共将发布三个表单变量,其中两个包含凭证,第三个包含HR-XML数据。如果由于任何原因过帐失败,将返回字符串值“error” 表单字段 集成\字段1=123
string strId = "123";
string strName = "test";
StreamReader sr2 = File.OpenText(Server.MapPath("~/App_Data/XMLFile.xml"));
string xml = sr2.ReadToEnd();
sr2.Close();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
xml = HttpUtility.UrlEncode(xmlDoc.OuterXml);
System.Text.UTF8Encoding encoding = new UTF8Encoding();
string postData = "xmldata=" + xml;
byte[] data = encoding.GetBytes(postData);
// Prepare web request...
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://localhost:1994/TestXMLPost/PostData.aspx");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
WebResponse res = (HttpWebResponse)myRequest.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string str = sr.ReadToEnd();
sr.Close();
在PostData.aspx上,我这样做是为了测试
if (Request.Form.Count > 0)
{
Response.Write( Request.Form["xmldata"] + "");
}
我没有收到任何回复。只有错误“远程服务器返回错误:(500)内部服务器错误。”
下面是我想使用HttpWebRequest模拟的HTML表单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>testing</title>
</head>
<body>
<form action="https://myurl.com/samplepage.cfm" method="post" >
integration_id<input type="text" name="integration_id" value="id" /><br />
integration_pwd<input type="text" name="integration_pwd" value="pwd" /><br />
<textarea name="hrxml" style="height: 404px; width: 593px">
<?xml version="1.0" encoding="UTF-8"?>
<BackgroundCheck account="test" userId="test" password="test">
<BackgroundSearchPackage>
<ReferenceId>
<IdValue>12345678</IdValue>
</ReferenceId>
<PersonalData>
<PersonName>
<GivenName>TEST</GivenName>
<FamilyName primary="undefined">TEST</FamilyName>
</PersonName>
<DemographicDetail>
<GovernmentID countryCode="US" issuingAuthority="SSN">00000000000000</GovernmentID>
<DateOfBirth>1901-01-01</DateOfBirth>
</DemographicDetail>
</PersonalData>
</BackgroundSearchPackage>
</BackgroundCheck>
</textarea>
<input type="submit" />
</form>
</body>
</html>
测试
集成\u id
集成\u pwd
12345678
测验
测验
00000000000000
1901-01-01
谢谢用它来看看电线上到底发生了什么
或者,将要发送到磁盘的内容写入副本
除上述内容外,您还可以检查目标计算机的事件查看器,以查找与错误相关的条目(如果您没有任何备用的错误日志记录)
最重要的是,你需要看看发生了什么。…然后呢?有什么问题吗?你试过什么了?谢谢你的建议。它真的帮助了我。我去看了事件查看器,惊讶地看到发布xml数据的页面抱怨请求存在潜在的危险。我们都知道Asp.net页面会验证每个传入的请求。因此,当我设置页面属性ValidateRequest=“false”时。问题现在解决了。谢谢你,布迪……:)