2009-12-28 18 views
1

我想通過HTTPs發送帶有userid和password的xml文件,然後使用POST方法發送HTTP上的所有其他xml文件,並將響應作爲xml文件背部。在ASP.NET(與vb.net優先)如何通過HTTP和HTTPS協議發送xml文件並獲得返回結果

,而我想送我的XML文件的URL是:http://www.hostelspoint.com/xml/xml.php exect xml文件pettern是:

<?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> 

回答

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();    
       } 
    } 
2

你應該檢查出的WCF REST入門工具包,並觀看HTTP Plain XML (POX) Services的屏幕錄像,其中一步一步地解釋如何做到這一點 - 創建一個WCF REST服務,該服務將接受並處理純XML流。

強烈推薦Pluralsight的所有WCF和WCF REST屏幕錄像!這是關於如何開始使用WCF的絕佳材料。

除此之外,MSDN WCF Developer Center是關於WCF和WCF REST的任何問題或更多信息的第一聯繫人。

+0

我使用2.0 framwork所以請告訴我這種方式..像:用-System.Net.HttpWebResponse –

+0

,你可以升級到.NET 3.5 SP1任何機會呢? ?它確實提供了許多新的和改進的功能,它完全值得升級,它並不是一個「新」.NET,但只是附加程序集 –

1

是的,您可以使用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; 
     };