2010-06-01 5 views
0

Je reçois ma demande d'une application tierce (domaine différent) à mon application ASP. Je gère la demande et fait la partie commerciale dans ma demande et comme un accusé de réception, j'ai besoin d'envoyer une chaîne XML en réponse à la même page qui POSTE la demande à mon application. J'ai réussi à récupérer l'entrée de demande en utilisant le code suivantEnvoyer la chaîne XML en tant que réponse

NameValueCollection postPageCollection = Request.Form; 
    foreach (string name in postPageCollection.AllKeys) 
    { 
     ... = postPageCollection[name]); 
    } 

Mais je ne suis pas sûr de savoir comment renvoyer la réponse XML avec chaîne sur le site (domaine différent)?

EDIT: Comment obtenir l'URL à partir de laquelle le POST est arrivé.

Répondre

1

Cant vous suffit d'utiliser le code suivant:

Request.UrlReferrer.ToString(); 
+0

J'ai trouvé Request.UrlReferrer est NULL. Je poste du fichier HTML enregistré sur mon disque local. –

2

Vous pouvez obtenir l'URL qui viennent de Request.ServerVariables [ "HTTP_REFERER"]

Pour le XML, voici 2 fonctions J'utilise

public static string ObjectToXML(Type type, object obby) 
{ 
    XmlSerializer ser = new XmlSerializer(type); 
    using (System.IO.MemoryStream stm = new System.IO.MemoryStream()) 
    { 
     //serialize to a memory stream 
     ser.Serialize(stm, obby); 
     //reset to beginning so we can read it. 
     stm.Position = 0; 
     //Convert a string. 
     using (System.IO.StreamReader stmReader = new System.IO.StreamReader(stm)) 
     { 
      string xmlData = stmReader.ReadToEnd(); 
      return xmlData; 
     } 
    } 
} 

public static object XmlToObject(Type type, string xml) 
{ 
    object oOut = null; 

    //hydrate based on private string var 
    if (xml != null && xml.Length > 0) 
    { 
     System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(type); 

     using (System.IO.StringReader sReader = new System.IO.StringReader(xml)) 
     { 
      oOut = serializer.Deserialize(sReader); 

      sReader.Close(); 
     } 
    } 

    return oOut; 
} 

Et voici un exemple que je l'utilise

[Serializable] 
public class MyClassThatKeepTheData 
{ 
    public int EnaTest; 
} 

MyClassThatKeepTheData cTheObject = new MyClassThatKeepTheData(); 

ObjectToXML(typeof(MyClassThatKeepTheData), cTheObject) 
+0

comment retourner la réponse avec la chaîne XML? –

+0

@Sri il existe plusieurs façons de retourner le fichier XML, l'un est de créer un fichier .ashx, et il suffit de taper là-bas. Votre client a juste besoin de demander ce fichier. L'autre manière dépend de votre protocole. Si votre cliend demande une page de vous (.aspx), il vous suffit de taper le xml à l'intérieur de cette page. – Aristos

Questions connexes