【问题标题】:Post XML to a URL将 XML 发布到 URL
【发布时间】:2013-02-25 23:57:18
【问题描述】:

我正在尝试将XMLDocument 发布到 URL。这是我目前所拥有的:

   var uri = System.Configuration.ConfigurationManager.AppSettings["Url"];
   var template = System.Configuration.ConfigurationManager.AppSettings["Template"];
   XmlDocument reqTemplateXml = new XmlDocument();
   reqTemplateXml.Load(template);

   reqTemplateXml.SelectSingleNode("appInfo/appNumber").InnerText = x; 
   reqTemplateXml.SelectSingleNode("appInfo/coappNumber").InnerText = y;

   WebRequest req = null;
   WebResponse rsp = null;
   req = WebRequest.Create(uri);
   req.Method = "POST";
   req.ContentType = "text/xml";
   rsp = req.GetResponse();

我想弄清楚的是如何将这个XmlDocument 加载到WebRequest 对象,以便它可以发布到那个URL。

【问题讨论】:

  • 会有这样的工作rsp.Load(request.GetResponse().GetResponseStream());

标签: c# .net xml


【解决方案1】:

您需要在像这样调用req.GetResponse() 之前写入RequestStream。

    using (var writer = new StreamWriter(req.GetRequestStream()))
    {
        writer.Write(xml);
    }

【讨论】:

  • 终于可以调试了。我在 req 对象的任何地方都没有看到 xml。执行此行后,我应该在哪里查找 xml?我只在 req 对象中看到两个键,Content-type 和 Host。我只是想确认 xml 已正确添加到对象中,但无法弄清楚。已经探索了一个小时的 req 对象。谢谢!
  • 你不会在 Visual Studio 的 req 对象的任何地方看到它。它被写入流中,我相信如果重置流,你会搞砸的。如果您想确保它正确地提交到服务器脚本,那么您可能需要像 wireshark 这样的工具。通常,我会设置一个“本地”服务器脚本,例如我自己的小型 asp.net 网站,它只是将请求转储到文件中。然后我会将 xml/payload 发布到我的本地站点并检查文件转储。
  • 什么是代码中的“xml”(传递给 write.Write())?
  • "xml" 是一个字符串,在这种情况下,据称它是一个格式良好的 xml 文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多