SOAP-Authentifizierung
Hallo Forum,
ich bin absoluter Neuling im Bereich SOAP und muss einen SOAP-Request aus Excel heraus starten.
Bei der Authentifizierung wird vom Webservice zusätzlich zu Nutzername und Passwort noch eine Mailadresse verlangt. Wie kann ich diese als 3. Parameter beim Open-Befehl mit übergeben? Oder gibt es einen anderen Weg, die Mailadresse mit zu übergeben?
Vielen Dank,
M. Born
ich bin absoluter Neuling im Bereich SOAP und muss einen SOAP-Request aus Excel heraus starten.
Bei der Authentifizierung wird vom Webservice zusätzlich zu Nutzername und Passwort noch eine Mailadresse verlangt. Wie kann ich diese als 3. Parameter beim Open-Befehl mit übergeben? Oder gibt es einen anderen Weg, die Mailadresse mit zu übergeben?
Vielen Dank,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 279246
Url: https://administrator.de/contentid/279246
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo Marco,
das kommt darauf an wie der Webservice aufgebaut ist und in welchem XML Tag der Service die Mail-Adresse erwwartet. Normalerweise sendet man eine XML-Datei mit den Daten an den Webservice nachdem man die Verbindung aufgebaut hat, dazu solltest du die Doku zum Webservice konsultieren.
Ein Beipspiel wie man so was mit dem XMLHTTP Objekt macht, findest du hier
http://www.office-loesung.de/ftopic640714_0_0_asc.php (ganz unten)
Grüße Uwe
das kommt darauf an wie der Webservice aufgebaut ist und in welchem XML Tag der Service die Mail-Adresse erwwartet. Normalerweise sendet man eine XML-Datei mit den Daten an den Webservice nachdem man die Verbindung aufgebaut hat, dazu solltest du die Doku zum Webservice konsultieren.
Ein Beipspiel wie man so was mit dem XMLHTTP Objekt macht, findest du hier
http://www.office-loesung.de/ftopic640714_0_0_asc.php (ganz unten)
Grüße Uwe
Moin zusammen,
du schließt ja mit <soapenv:Header/> in deinem Code ja den Header schon ab also landen deine Headereinträge nicht im Header der Nachricht ...
https://www.teialehrbuch.de/Kostenlose-Kurse/XML/7883-Der-syntaktische-A ...
btw. ist das leider kein valides *.wsdl Dokument, wahrscheinlich mal wieder aus dem IE rauskopiert
Gruß grexit
du schließt ja mit <soapenv:Header/> in deinem Code ja den Header schon ab also landen deine Headereinträge nicht im Header der Nachricht ...
https://www.teialehrbuch.de/Kostenlose-Kurse/XML/7883-Der-syntaktische-A ...
btw. ist das leider kein valides *.wsdl Dokument, wahrscheinlich mal wieder aus dem IE rauskopiert
Gruß grexit
Zitat von @MarcoBorn:
ich habe meinen Code mit Hilfe eines SOAP-Test-Tools laufen laufen und dort ist das Ganze problemlos gelaufen.
Naja da fehlen die ganzen Standard Namspaces die das File als *.wsdl identifizieren und außerdem ist dort ein Tag nicht geschlossen (<xsd:sequence> in Zeile 19), und die XML Declaration fehlt, also mitnichten valide! Du hast den Code wahrscheinlich aus dem IE kopiert ... das gibt immer nur Schrott, also poste mal den funktionsfähigen WSDL-Code.ich habe meinen Code mit Hilfe eines SOAP-Test-Tools laufen laufen und dort ist das Ganze problemlos gelaufen.
hier auch so probiert. Wie müßte ich denn meinen Code umbauen, dass e läuft? Nur den Client-Header-Teil in den
Header packen, oder den ganzen Block mit addCustomer? Dann wäre ja im Body nichts mehr drin. Gäbe das dann nicht auch Probleme?
Lass dir einen validen Envelope doch einfach generieren, dafür gibts Online-Tools ...Header packen, oder den ganzen Block mit addCustomer? Dann wäre ja im Body nichts mehr drin. Gäbe das dann nicht auch Probleme?
Wie geschrieben lad das WSDL-File in den Generator und dir wird ein valider Envelope ausgeworfen den du nutzen kannst, dann sollte das laufen.
@122990 hat recht, das WSDL File sollest du auch in Firefox nur über Kontextmenü > Seitenquelltext kopieren dann ist es auch valide! Nur das was Firefox direkt anzeigt ist gerenderter Mist, da fehlt die Hälfte.
Dein Code ist schon fast korrekt, nur die XML Declaration fehlt
Dann würde ich den Content-Type noch explizit angeben wenn im Passwort Sonderzeichen vorkommen:
Dann ist es in manchen Fällen noch nötig den Header SOAPAction zu definieren und ihr die Funktions-URL als Parameter mitzugeben:
(Bitte auf Groß- und Kleinschreibung der Methoden achten)
Das hat hier mit einem Service den ich hier mal testweise eingerichtet habe, einwandfrei funktioniert.
Wenn du Zweifel hast, zeichne einfach einen funktionierenden Request mit Wireshark oder mit den Browser-DeveloperTools (F12 > Tab Netzwerkanalyse) auf, dort siehst du was für einen XML-Envelope der Client an den Service schickt und kannst dein Envelope entsprechend anpassen.
Ohne weitere Info zum Dienst ist hier ein Debugging über die Ferne für mich schwierig, das wirst du verstehen.
Wenn man wüsste von welchem Hersteller/Dienst der Service bereitgestellt wird, könnte man die Doku konsultieren.
Noch zur Info: Die Parameter bei der Funktion "Open" für Username und Passwort gelten nur wenn die Website mit Standardauthentifizierung abgesichert ist, d.h. wenn man die Seite im Browser aufruft und eine Authentifizierungsabfrage erscheint.
Grüße Uwe
Dein Code ist schon fast korrekt, nur die XML Declaration fehlt
request = "<?xml version=""1.0"" encoding=""utf-8""?>" & _
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.SetRequestHeader "SOAPAction", "http://myserver.de/soap/action/addCustomer"
Das hat hier mit einem Service den ich hier mal testweise eingerichtet habe, einwandfrei funktioniert.
Wenn du Zweifel hast, zeichne einfach einen funktionierenden Request mit Wireshark oder mit den Browser-DeveloperTools (F12 > Tab Netzwerkanalyse) auf, dort siehst du was für einen XML-Envelope der Client an den Service schickt und kannst dein Envelope entsprechend anpassen.
Ohne weitere Info zum Dienst ist hier ein Debugging über die Ferne für mich schwierig, das wirst du verstehen.
Wenn man wüsste von welchem Hersteller/Dienst der Service bereitgestellt wird, könnte man die Doku konsultieren.
Noch zur Info: Die Parameter bei der Funktion "Open" für Username und Passwort gelten nur wenn die Website mit Standardauthentifizierung abgesichert ist, d.h. wenn man die Seite im Browser aufruft und eine Authentifizierungsabfrage erscheint.
Grüße Uwe
Cannot find SOAP action mapping for http://myserverde/soap/action/addCustomer
Dann lass den SOAPAction Header mal weg, die URL die du brauchst kenne ich leider nicht, die musst du schon anpassen (das war ja nur eine Beispiel-URL).
Wie wärs mal wenn du den Hersteller des Dienstes nennst ? Oder die Doku konsultierst.
Du weißt schon das das hier Raten mit der Glaskugel bedeutet, ohne das URL Schema zu kennen.
Nehm doch einfach Wireshark wie @colinardo vorgeschlagen hat, damit ist das in 0 komma nix erledigt ... und du siehst was für Daten wie übertragen werden müssen!
Du weißt schon das das hier Raten mit der Glaskugel bedeutet, ohne das URL Schema zu kennen.
Nehm doch einfach Wireshark wie @colinardo vorgeschlagen hat, damit ist das in 0 komma nix erledigt ... und du siehst was für Daten wie übertragen werden müssen!