【发布时间】:2013-01-11 22:42:38
【问题描述】:
我正在尝试弄清楚如何正确序列化我的 XmlDocument 并通过 HTTPWebRequest 对象发送它。
这是我目前所拥有的:
Stream requestStream;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://wwwcie.ups.com/ups.app/xml/Track");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
requestStream = request.GetRequestStream();
XmlSerializerNamespaces xsm = new XmlSerializerNamespaces();
xsm.Add("", ""); // remove namespace
XmlSerializer ser = new XmlSerializer(xmlRequest.GetType());
ser.Serialize(requestStream, xmlRequest);
requestStream.Write(postData, 0, postData.Length);
requestStream.Close();
我不确定的一些事情。我有 2 个 XmlDocuments 我需要在同一个 HTTPWebRequest 中发送。我之前尝试过将 XmlDocuments 转换为字符串并将它们连接起来(以发送字符串),但是当我使用 StringBuilder / Writer 时,它添加了:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://myNameSpace/">
我的 XmlDocument 对象中已经有声明,所以现在它在那里两次,我不能在那里有 <string... 部分。将 XmlDocuments 转换为字符串然后将它们连接起来并发送它是否更容易,或者是否有一种简单的方法可以按原样发送 XmlDocuments?
编辑:
见C# XmlDocument Nodes 当我尝试将我的一个 XmlDocuments 转换为字符串时,它显示为
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://myNamespace/">
<TrackRequest>
<Request>
<TransactionReference>
<CustomerContext>whatever</CustomerContext>
</TransactionReference>
</Request>
<TrackingNumber>123</TrackingNumber>
</TrackRequest>
</string>
我希望我的根是<TrackRequest>
【问题讨论】:
-
你能展示你想要的 XML 的样子吗?您不能连续发送两个文档 - 需要有一个根元素。
-
还有,xmlRequest是怎么定义的?
标签: c# .net httpwebrequest xmldocument