So stellen Sie SOAP-API-Richtlinien-/Erweiterungsanforderungen im SOAP-Client bereit
P粉511896716
P粉511896716 2023-08-29 20:09:01
0
1
520

Ich muss eine Verbindung zu einer Soap-API herstellen ... Ich habe die Soap-API jetzt ein paar Mal verwendet, aber da 99 % der APIs jetzt ruhen, habe ich sie seit mehreren Jahren nicht verwendet

;

Wenn ich die API mit dem Soap-Client aufrufe, erhalte ich

SOAP-ERROR: WSDL wird analysiert: Unbekannte erforderliche WSDL-Erweiterung „http://schemas.xmlsoap.org/ws/2004/09/policy“ 

Wenn ich also die WSDL-Adresse im Browser öffne (Login/Passwort geschützt), kann ich diese Zeilen in der XML-Ausgabe sehen

  

Wo ich es habe

  

Wenn ich nach diesem Fehler suche, kann ich im gesamten Internet nur eine Ressource finden, deren Antwort darin besteht, die Richtlinienanforderung zu deaktivieren: aber ich besitze die API nicht. Wenn ich also nach dem Richtliniennamen OP_SI_USBPC_REQUEST suche, gibt es kein Problem, ich erhalte keine Ergebnisse, also habe ich Ich vermute, dass dies vom API-Besitzer festgelegt wurde. Einige benutzerdefinierte Namen

Meine Frage lautet also: Soll ich die Richtlinie erstellen und sie der Soap-Kundenanfrage beifügen? Was ist der Zusammenhang zwischen Richtlinie und Erweiterungen, wenn ich die Fehlermeldung „Erweiterung fehlt“ erhalte, diese jedoch verschwindet, wenn ich die Richtlinienanforderung deaktiviere?

Kann ich die Erweiterung irgendwo herunterladen? Was ist das Format...soll ich sie an die Soap-Client-Anfrage anhängen?

Oder sollte es auf dem Server installiert werden? Wenn ich die Erweiterung irgendwie hinzufüge, verschwindet der Fehler dann, weil ich den Benutzernamen/das Passwort an den API-Aufruf angehängt habe, oder ist dies nur der erste Schritt und ich sollte mich danach um die Richtlinienanforderung kümmern?

Übrigens verwende ich PHP, um die API aufzurufen, das ist mein Code

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

Wenn ich die XML-Datei herunterlade und die Anforderung für eine lokale Datei deaktiviere und diese Dateiadresse im SOAP-Client verwende, kann ich dann diese Datei verwenden, um mit der API zu kommunizieren? (Mein Verständnis ist, dass die XML-Datei keine tatsächlichen Daten enthält, sondern nur die Schnittstelle/Definition für den Soap-Client ist und ich keine lokale Datei verwenden kann, um mit der Online-API zu kommunizieren, oder irre ich mich vielleicht?) < ;/p>

P粉511896716
P粉511896716

Antworte allen (1)
P粉916553895

消息“未知所需的 WSDL 扩展”意味着 SoapClient 在外部发现了一个元素 WSDL 命名空间的wsdl:required属性设置为true(正如您在此处看到的)。

因此,为了避免该错误,一种方法是将wsdl:required属性设置为false

完全可以下载 WSDL 文件、修改它并使用本地副本。只需确保使用 绝对路径,如此处所示。

顺便说一下,此上下文中的“策略”指的是WS-Policy规范。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!