【问题标题】:How to send a xml file over HTTP and HTTPS protocol and get result back如何通过 HTTP 和 HTTPS 协议发送 xml 文件并返回结果
【发布时间】:2009-12-28 06:07:32
【问题描述】:

我想通过 HTTPs 发送带有用户 ID 和密码的 xml 文件,然后使用 POST 方法在 HTTP 上发送所有其他 xml 文件,并将响应作为 xml 文件返回。在 ASP.NET 中(首选 vb.net)

我想将我的 xml 文件发送到的 url 是:http://www.hostelspoint.com/xml/xml.php 执行 xml 文件格式为:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_PingRQ xmlns="http://www.opentravel.org/OTA/2003/05"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05OTA_PingRQ.xsd"
      TimeStamp="2003-03-17T11:09:47-05:00"
      Target="Production" Version="1.001" PrimaryLangID="en"
      EchoToken="testtoken12">
  <EchoData>Hello</EchoData>
</OTA_PingRQ>

【问题讨论】:

    标签: asp.net xml wcf http https


    【解决方案1】:

    您应该查看 WCF REST Starter Kit,并观看 HTTP Plain XML (POX) Services 上的截屏视频,其中逐步解释了如何做到这一点 - 创建一个将接受和处理纯 XML 流的 WCF REST 服务。

    强烈推荐 Pluralsight 的所有 WCF 和 WCF REST 截屏视频!这是关于如何开始和使用 WCF 的极好材料。

    除此之外,MSDN WCF Developer Center 是您在 WCF 和 WCF REST 方面的任何问题或更多信息的第一联系人。

    【讨论】:

    • 我正在使用 2.0 框架,所以请以这种方式告诉我.. 比如:使用 -System.Net.HttpWebResponse
    • 有没有机会升级到 .NET 3.5 SP1 ?它确实提供了许多新的和改进的功能,并且完全值得升级,而且它真的不是“新”.NET,而只是额外的程序集
    【解决方案2】:

    我不知道为什么你从这里删除了正确答案,但昨天我在这里得到了正确答案。它是:-(谁能告诉我如何使用 HTTPS 协议做同样的事情?)

        string targetUri = "http://www.hostelspoint.com/xml/xml.php";
        System.Xml.XmlDocument reqDoc = new System.Xml.XmlDocument();
        reqDoc.Load(Server.MapPath("~\\myfile.xml"));
        string formParameterName = "OTA_request";
        string xmlData = reqDoc.InnerXml;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUri);
        string sendString = formParameterName + "=" + HttpUtility.UrlEncode(xmlData);
        byte[] byteStream;
        byteStream = System.Text.Encoding.UTF8.GetBytes(sendString);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteStream.LongLength;
        using (Stream writer = request.GetRequestStream())
        {
            writer.Write(byteStream, 0, (int)request.ContentLength);
            writer.Flush();
        }
        HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
        string respStr = "";
        if (request.HaveResponse)
        {
            if (resp.StatusCode == HttpStatusCode.OK || resp.StatusCode == HttpStatusCode.Accepted)
            {
                StreamReader respReader = new StreamReader(resp.GetResponseStream());
                respStr = respReader.ReadToEnd(); // get the xml result in the string object  
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(respStr);
                Label1.Text = doc.InnerXml.ToString();               
                     }
        } 
    

    【讨论】:

      【解决方案3】:

      是的,您可以使用 HTTPS 协议做同样的事情。您必须在请求之前添加此代码:

      System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
               {
                   bool validationResult = true;
      
                   //
                   // policy code here ...
                   //
      
                   return validationResult;
               };
      

      【讨论】:

        猜你喜欢
        • 2019-01-09
        • 2019-11-05
        • 1970-01-01
        • 2017-10-22
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        相关资源
        最近更新 更多