Comment fournir les exigences en matière de politique/extension de l'API SOAP dans le client SOAP
P粉511896716
P粉511896716 2023-08-29 20:09:01
0
1
510

Je dois me connecter à une API Soap... J'ai utilisé l'API Soap plusieurs fois maintenant, mais comme 99 % des API sont au repos maintenant, je ne les ai pas utilisées depuis plusieurs années

;

Lorsque j'appelle l'API à l'aide du client Soap, j'obtiens

SOAP-ERROR : analyse WSDL : extension WSDL requise inconnue 'http://schemas.xmlsoap.org/ws/2004/09/policy' 

Ainsi, lorsque j'ouvre l'adresse wsdl dans le navigateur (login/mot de passe protégé), je peux voir ces lignes dans la sortie XML

   

Où je l'ai

  

Lorsque je recherche cette erreur, je ne trouve qu'une seule ressource sur l'ensemble d'Internet où la réponse est de désactiver l'exigence de stratégie, qui est : mais je ne possède pas l'API, donc lorsque je recherche le nom de la stratégie OP_SI_USBPC_REQUEST il n'y a pas de problème, je n'obtiens aucun résultat, donc je suppose ceci est défini par le propriétaire de l'API. Certains noms personnalisés

Ma question est donc la suivante : dois-je établir la politique et la joindre à la demande du client Soap ? Quel est le lien entre la stratégie et les extensions, car j'obtiens une erreur d'extension manquante, mais si je désactive l'exigence de stratégie, elle disparaît

Y a-t-il un endroit où je peux télécharger l'extension ? Quel est le format... dois-je les ajouter à la demande du client Soap ?

Ou est-ce quelque chose qui devrait être installé sur le serveur ? Si j'ajoute l'extension d'une manière ou d'une autre, l'erreur disparaîtra-t-elle parce que j'ai ajouté le nom d'utilisateur/mot de passe à l'appel de l'API, ou est-ce juste la première étape et je devrais ensuite gérer les exigences de la politique ?

Au fait, j'utilise php pour appeler l'API, voici mon code

$options = [ 'login' => 'mlogin', 'mot de passe' => 'mon mot de passe', ]; $client = new SoapClient("http://domain:port/dir/wsdl/?p=sa/92130e1ffa97338ba2d1fc026567031d" , $options );

Si je télécharge le fichier XML, désactive l'exigence d'un fichier local et utilise cette adresse de fichier dans le client Soap, puis-je utiliser ce fichier pour communiquer avec l'API ? (Je crois comprendre que le XML ne contient aucune donnée réelle, c'est juste l'interface/définition du client Soap et je ne peux pas utiliser de fichier local pour parler à l'API en ligne, ou peut-être que je me trompe ?) < ;/p>

P粉511896716
P粉511896716

répondre à tous (1)
P粉916553895

Le message "Extension WSDL requise inconnue" signifie que SoapClient a trouvé un élément en externewsdl:required属性设置为truepour l'espace de noms WSDL (Comme vous pouvez le voirici).

Donc, pour éviter cette erreur, une solution consiste à remplacerwsdl:required属性设置为false.

Il est tout à fait possible de télécharger un fichier WSDL, de le modifier et d'utiliser une copie locale. Assurez-vous simplement d'utiliser Chemin absolu, comme indiquéici.

À propos, « politique » dans ce contexte fait référence à la spécificationWS-Policy.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!