Comment faire pour envoyer du xml par le biais d'une requête HTTP, et de recevoir de l'aide ASP.NET MVC?
J'essaie d'envoyer une chaîne de caractères xml par le biais d'une requête HTTP, et de le recevoir à l'autre extrémité. Sur l'extrémité de réception, je suis toujours arriver que le xml est null. Pouvez-vous me dire pourquoi c'est?
Envoyer:
var url = "http://website.com";
var postData = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><xml>...</xml>";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData);
var req = (HttpWebRequest)WebRequest.Create(url);
req.ContentType = "text/xml";
req.Method = "POST";
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
string response = "";
using (System.Net.WebResponse resp = req.GetResponse())
{
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
response = sr.ReadToEnd().Trim();
}
}
Recevoir:
[HttpPost]
[ValidateInput(false)]
public ActionResult Index(string xml)
{
//xml is always null
...
return View(model);
}
OriginalL'auteur Kalina | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de le faire fonctionner de la sorte:
Cependant, je suis toujours curieux de savoir pourquoi prendre le xml comme un paramètre ne fonctionne pas.
Merci il a également travaillé pour moi.. .Si vous affichez comme un ruisseau que vous avez à lire des flux d'entrée pour obtenir les données.Pour Recevoir en "xml" vairable vous devez envoyer avec la requête chaîne de caractères comme paramètre post
OriginalL'auteur Kalina
Je crois que c'est parce que vous avez spécifié
req.ContentType = "text/xml";
.Si je me souviens bien, lorsque vous définissez votre contrôleur à l'aide d'un "primitif" de type (
string
être un "primitif" tapez ici)MVC essayez de regarder pour les
xml
soit dans une chaîne de requête ou dans la publication des données d'un formulaire html (champ de saisie). Mais si vous envoyez quelque chose de plus complexe pour le serveur MVC de l'envelopper dans une classe spécifique.Par exemple, lorsque vous téléchargez plusieurs fichiers vers le serveur, vous pouvez les accepter comme suit dans votre contrôleur
Si ma conjecture est que vous avez à accepter la
text/xml
flux dans le contrôleur à l'aide de la classe correcte.Mise à jour:
Il semble qu'il n'est pas une classe parce que vous accepter un flux de données (et il ne vient pas de l'élément d'entrée). Vous pouvez écrire votre propre modèle de classeur à accepter document xml. Voir les discussions ci-dessous.
Lecture de texte/xml dans un ASP.Contrôleur MVC
Comment passer XML comme la POSTE à un ActionResult ASP MVC .NET
OriginalL'auteur erdinger