2009-09-08 7 views
4

J'ai reçu une tâche apparemment simple.Retour XML comme réponse HTTP

Lorsqu'une URL donnée est demandée, la réponse doit simplement être un code XML valide.

Comment puis-je y parvenir?

L'URL contiendra tout le code nécessaire pour obtenir les données et construire la chaîne XML correcte. Comment allez-vous alors et manipulez la réponse pour retourner cette chaîne seulement? L'appelant reçoit la chaîne XML et remplit une base de données avec, c'est la responsabilité que j'ai juste besoin de fournir cette partie du projet.

Merci

Répondre

2

Je voudrais aller pour un HttpHandler. De cette façon, vous contournez toute la création de contrôle d'asp.net, ce qui est meilleur pour la performance et vu que vous ne sortirez pas de code HTML, il n'y a aucun intérêt à utiliser une page ASPX réelle.

+0

oo très agréable, mais je ne sais pas comment s'y prendre, je dois aussi interroger une base de données et boucle les résultats etc, donc je pense que je vais coller à une page avec du code derrière la création de mon XML, puis effacer la réponse comme ci-dessus. Merci bien +1 – Robert

+0

C'est vraiment très simple, il suffit d'aller ajouter un nouvel élément dans Visual Studio et sélectionnez Http Handler, il créera le fichier codebehind + ashx pour vous, alors vous pouvez coder votre récupération de données comme pour une page. Vous pouvez également envoyer des variables de chaîne de requête à httphandlers et même utiliser des sessions si nécessaire. puis en utilisant Response.Write (yourXml); Response.ContentType = "text/xml"; vous produisez le xml. – Colin

+0

Généralement mon VS ne propose pas le Http Handler comme un élément seulement GenericHandler – Robert

1

En supposant que vous avez votre chaîne XML créé, vous pouvez effacer la réponse et il suffit d'écrire votre ficelle.

Response.Clear(); 
Response.ContentType = "text/xml"; 
Response.Write(myXMLString); 
+1

Vous devez également définir la 'Response.ContentType = « text/xml »' – pjp

1

Si vous ne souhaitez pas utiliser webservice épanouie alors vous pourriez faire quelque chose comme ceci:

private void Page_Load(object sender, System.EventArgs e) 
{ 

    Response.ContentType = "text/xml"; 

    //get data from somewhere... 
    Response.Write(data); 

    } 
} 

Voir ici quelque chose de similaire en utilisant des images http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=325

9

Jetez un oeil à cette :

Response.Clear(); 
Response.Write(yourXml); 
Response.ContentType = "text/xml"; 
Response.End(); 
0

Vous trouverez ci-dessous la manière d'envoyer des données XML au navigateur en guise de réponse.

StringBuilder xmlBuilder = new StringBuilder(); 

     xmlBuilder.Append("<Books>"); 
     xmlBuilder.Append("<Book>"); 
     xmlBuilder.Append("Maths"); 
     xmlBuilder.Append("</Book>"); 
     xmlBuilder.Append("</Books>"); 

     context.Response.ContentType = "text/xml"; 

     context.Response.BinaryWrite(Encoding.UTF8.GetBytes(xmlBuilder.ToString())); 
     context.Response.End(); 
Questions connexes