2009-12-28 11 views
1

Je veux envoyer un fichier xml avec ID utilisateur et mot de passe sur HTTP, puis envoyer tous les autres fichiers xml sur HTTP en utilisant la méthode POST et obtenir la réponse sous forme de fichier xml arrière. dans ASP.NET (avec vb.net préféré)Comment envoyer un fichier xml via protocole HTTP et HTTPS et obtenir le résultat

L'URL auquel je veux envoyer mon fichier xml est: http://www.hostelspoint.com/xml/xml.php exect fichier xml pettern est:

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

Répondre

2

Je ne sais pas pourquoi vous avez supprimé la bonne réponse d'ici mais hier j'ai eu une réponse correcte ici. et il est: - (peut me dire comment faire même avec le protocole 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

Vous devriez vérifier le reste WCF Starter Kit, et regarder le screencast sur HTTP Plain XML (POX) Services qui explique étape par étape comment faire exactement cela - créer un service WCF REST qui acceptera et traitera un flux XML brut.

Tous les screencasts WCF et WCF REST de Pluralsight sont fortement recommandés! C'est un excellent document sur comment démarrer et travailler avec la WCF.

En plus de cela, le MSDN WCF Developer Center est votre premier point de contact pour toute question ou plus d'informations sur WCF et WCF REST.

+0

J'utilise 2.0 framwork donc s'il vous plaît me dire de cette manière .. comme: en utilisant -System.Net.HttpWebResponse –

+0

une chance que vous pouvez passer à .NET 3.5 SP1? ? Il offre beaucoup de fonctionnalités nouvelles et améliorées et ça vaut vraiment la peine d'être mis à jour, et ce n'est vraiment pas un "nouveau" .NET, mais seulement des assemblages supplémentaires –

1

Oui, vous pouvez le faire même chose en utilisant le protocole HTTPS. Vous devez ajouter ce code avant la demande:

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

      // 
      // policy code here ... 
      // 

      return validationResult; 
     }; 
Questions connexes