Je suis sur le point d'intégrer un service SOAP tiers dans mon application. Je n'ai aucun contrôle sur ce service, j'ai juste un bounch de fichiers .xsd, un fichier wsdl et quelques exemples de réponses. J'utilise la méthode par défaut pour générer un client proxy dans Visual Studio. J'ai ajouté le même wsdl à Soap UI avec la réponse xml. Le fait est que lorsque je reçois la réponse dans mon application, certaines des valeurs sont nulles. En ajoutant une classe implémentant IEndpointBehavior and IClientMessageInspector
au client de service, je peux voir dans la méthode AfterReceiveReply
la réponse XML attendue. Certaines valeurs de l'objet proxy sont nulles.DataContractSerializer, xsd et response xml
En examinant les objets dans la définition de service, je peux voir que l'attribut Order
est marqué sur les types. Par exemple:
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string name { .......
Ma première pensée était que la réponse XML ne contient pas tous les éléments attendre et dans l'ordre correct tel que décrit dans le fichier .xsd.
En regardant le fichier xsd concerné, les éléments sont définis comme suit:
<xs:element name="name" type="MyTypeHere" minOccurs="0">
<xs:annotation>
<xs:documentation>Some documentation</xs:documentation>
</xs:annotation>
</xs:element>
Est-ce que cet élément a besoin d'être là dans la réponse quand marquée comme
minOccurs="0"
Ou la seule valeur être nul? Pour une raison évidente, je ne peux pas poster les fichiers wsdl ou les fichiers .xsd ici ..
Merci d'avance.
Je ne suis pas vraiment sûr de ce que vous demandez. Y a-t-il réellement un problème? –
@CharlesMager Si un élément dans le xsd est marqué avec minOccurs = "0", doit-il être dans la réponse xml? Ou la valeur sera-t-elle vide, mais l'étiquette est-elle toujours là? Compréhensible? Merci. –
'minOccurs = 0' est assez explicite. Le nombre minimum de fois que l'élément doit se produire est 0. Donc non, il n'a pas besoin d'être dans la réponse; c'est optionnel. –