Donc après que je reçois ma réponse que je fais (Où T
dans ce cas est string
):Comment désérialiser une réponse de savon qui n'est qu'un élément?
var theResult = response.Content.ReadAsStringAsync().Result;
using (var stringreader = new StringReader(theResult))
{
var serializer = new XmlSerializer(typeof(T));
var responseObj = (T)serializer.Deserialize(stringreader);
}
theResult
est:
<string xmlns="http://tempuri.org/">Hello World</string>
Quand je fais Desrialize
je reçois une exception. <string xmlns='http://tempuri.org/'> was not expected.
comme exception interne et There is an error in XML document (2, 2).
comme message.
Je suis en train de désérialiser Hello World
en une chaîne ou de désérialiser en un objet lorsque j'ai plusieurs éléments avec plus qu'un simple élément racine. Quand il y a un élément racine avec plus de membres, je pense que j'ai compris.
Vous devez supprimer l'espace de noms de l'enveloppe SOAP résultante. Si vous avez écrit le service, vous pouvez ajouter [WebService (Namespace = "")] je pense! – Wheels73
Je ne l'ai pas écrit. – Pittfall
Jetez un coup d'œil aux XmlSerializerNamespaces. Je pense que vous pouvez passer en un paramètre XML pour le sérialiseur et le supprimer. A défaut, vous devez avoir un type de référence lorsque vous avez ajouté le service Web. Recherchez le type de réponse qui contient la chaîne et vous pourrez peut-être l'y supprimer. – Wheels73