Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP::SOAP wsdl über https lesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] PHP::SOAP wsdl über https lesen

    Hallo,
    ich schlage mich seit einiger Zeit mit einem Problem herum und ich komme einfach nicht weiter... Die Suche habe ich auch schon bemüht, aber da scheint es auch nichts dazu zu geben!
    Folgendes Problem:
    Um die SOAP-API zu benutzen, verwende ich die neue php-interne Bibliothek. Die Webservices, die ich benutzen habe, stellen ihre WSDL-Datei über https zur Verfügung und sind mit User/Password gesichert.

    Die einfache Lösung scheint hier zu sein:
    PHP-Code:
    $api = new SoapClient('https://someapi.de?wsdl',array('login'=>'abc','password'=>'xyz')); 
    Das funktioniert aber leider nicht. Ich bekomme einen Fehler und zwar:
    Code:
     SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://someapi.de?wsdl': failed to load external entity 'https://someapi.de?wsdl'
    Das interessante ist: Wenn ich die URL in den Browser eingebe, kommt zwar erst eine Zertfikatswarnung, aber wenn ich dann Username und Password eingebe, lädt er die WSDL. Ich kann diese jetzt speichern und lokal ablegen. Benutze ich jetzt die lokale Datei, mit gleicher pw/user Kombi funktioniert die API.

    Mein Workaround ist also zur Zeit, die Datei mit cURL und ausgeschaltetem CURLOPT_SSL_VERIFYHOST zu holen, zwischenzuspeichern und dann zu benutzen. Ist sehr umständlich und unflexibel.

    Meine Frage: Wie kann ich trotz des unsignierten Zertifikates die WSDL direkt laden, ohne sie zwischenzuspeichern?
    Eine andere SOAP-Library zu verwenden oder valide Zertifikate zu installieren geht leider nicht. (Nur falls das jemand vorschlagen wollte )

    Vielen Danke schonmal im Vorraus

    edit: Php-Version: 5.2.9
    OpenSSL 0.9.8b
    libcurl/7.15.5


  • #2
    Soweit es im Manual steht schickt SoapClient die Logindaten nur beim remote call mit. Nicht wenn er die WSDL Datei holt. Entweder muss dein Workaround so bleiben oder die WSDL Datei gibst du über normales HTTP frei :/

    Kommentar


    • #3
      Hey, danke für die Schnelle antwort. Sowas habe schon vermutet
      Dann muss der Workaround wohl so bleiben und ich werde ihn noch etwas ausbauen.

      Kommentar

      Lädt...
      X