Quelle est la manière la plus simple (ou quelconque) de déterminer si un argument spécifique pour un appel de savon est facultatif/requis? J'utilise actuellement SoapClient (en mode WSDL) pour créer une fonctionnalité similaire à SoapUI. La seule chose dont j'ai besoin à ce stade est de trouver des paramètres optionnels et obligatoires.SoapClient: détection des arguments facultatifs/requis?
1
A
Répondre
1
Si vous vérifiez le fichier WSDL pour votre service Web, vous pouvez voir le schéma de demande. L'option/required dépend des attributs minOccurs et maxOccurs sur les éléments de cette xsd. Par défaut, minOccurs et maxOccurs sur <xsd:element>
, <xsd:sequence>
, <xsd:all>
, <xsd:choice>
... sont 1, donc tous les éléments sont requis par défaut. S'il y a des éléments qui ont un attribut minOccurs = "0", alors ces éléments seront optionnels.
i.e. vous avez cette xsd:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string" minOccurs="0"/>
<xs:element name="country" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Dans le xsd au-dessus des <city>
et <country>
éléments dans l'ordre <shipto>
sont facultatifs. La séquence <item>
est également facultative, et si <item>
apparaît, le <note>
dans cette séquence est également facultatif. Le reste est requis.
J'espère que cela aide,
Questions connexes
- 1. Détection automatique C++ des arguments de modèle?
- 2. CakePHP SoapClient supprime des champs?
- 3. Débogage SoapClient
- 4. PHP SoapClient Avertissement: SoapClient :: SoapClient(): Impossible de définir le fichier de clé privée
- 5. PHP SoapClient envoie des caractères XML échappés
- 6. Comment utiliser PHP5 SoapClient :: SoapClient() avec un certificat client?
- 7. PHP SoapClient :: __ soapCall
- 8. SOAP PHP paramètres SOAPClient
- 9. PHP SoapClient expire
- 10. PHP SoapClient Timeout
- 11. HttpAuth avec C# SoapClient
- 12. PHP SoapClient request
- 13. Travelport uAPI php SoapClient
- 14. php soapclient à C#
- 15. PHP SoapClient: Action mismatch
- 16. Classe SoapClient manquante
- 17. PHP webservice erreur SOAPClient
- 18. API SOAPClient Issue
- 19. WSDL utilisant soapclient
- 20. SoapClient: faultcode WSDL
- 21. PHP: erreur Webservice soapclient
- 22. Comment arrêter PHP SoapClient convertir s1: arguments char à 0 ou 1 en demande
- 23. passant variable xml par soapclient
- 24. Comment faire SoapClient sur php
- 25. Problème PHP soapClient and Sequences
- 26. Passer des arguments au constructeur de classe PHP SOAP?
- 27. insertion de chaîne dans Soapclient
- 28. erreur SoapClient fallback en PHP
- 29. paypal SoapClient ne fonctionne pas
- 30. requête SOAP en utilisant SoapClient
Ouais c'est comme ça que j'ai fini par le faire. Naturellement pas un seul WSDL qui n'utilise pas de XML dépendants pour définir les types, donc j'ai fini par "emprunter" du code à partir de [https://github.com/staabm/soap-client-generator/blob/master/WSDLInterpreter.php # L164] pour inclure tous les imports/includes/wsdl. Tes réponses sont parfaitement claires et auraient résolu le problème pour moi si j'étais encore coincé, alors merci pour l'effort :) – Blizz
Donc je suis en retard ... en tout cas merci pour l'acceptation :). – albciff
En retard pour moi, mais je l'espère très opportun pour tout le monde avec la même question :) – Blizz