2016-12-12 2 views
0

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.

+0

Je ne suis pas vraiment sûr de ce que vous demandez. Y a-t-il réellement un problème? –

+0

@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. –

+0

'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. –

Répondre

0

Ne vous souciez pas des valeurs nulles. Tant qu'ils remplissent les valeurs dont vous avez besoin, vous êtes prêt à partir.

Parfois, ils veulent un type de réponse à tous les types de demandes. Ils ont tendance à ajouter des champs qui ne sont pas nécessaires pour d'autres types de requêtes.

+0

Les valeurs nulles doivent avoir une valeur, elles apparaissent dans la réponse XML brute. –

+0

Si tel est le cas, vous devez contacter l'administrateur de ce service. C'est une erreur de programmation. –