Domino 9 und frühere Versionen > ND8: Entwicklung
Fehler "White spaces are required between publicId and systemId"
Ruedi:
Ich bin Web Service Anfänger und habe eben mit LS meinen ersten einfachen Web Service Provider erstellt. So einfach, dass er nur gerade "Hello World" + den effektiven Usernamen zurückgibt. Im Service habe ich "Run as web user" selektiert. Rufe ich den Service im Web Services Explorer von Eclipse auf, entspricht das Ergebnis durchaus meinen Vorstellungen (vgl. Screenshot).
Allerdings nur dann, wenn Anonymous Lesezugriff auf den Web Service hat. Ohne Zugriff erhalte ich die Fehlermeldung "White spaces are required between publicId and systemId". Die gleiche Meldung, wenn die DB auf einem Server liegt, der SSL-Verschlüsselung verlangt.
Was kann/muss ich vorkehren, damit ich mit gegenüber dem Web Service authentifizieren kann (ich nehme mal an, dass dies der Grund des Fehlers ist)? Oder ganz allgemein gefragt: wie müsste mein LS-Code aussehen, damit ich meinen Web Service konsumieren kann?
Vielen Dank für alle wohlwollenden und nachsichtigen Antworten
Ruedi
Tim Pistor:
Hallo Ruedi,
Dim ws As New exampleOne
Call ws.Setcredentials("user", "password")
Call ws.machWas()
Gruß Tim
Ruedi:
Hallo Tim
Danke für deine Antwort. Für mich Web Service Anfänger ist sie allerdings etwas gar kurz ausgefallen. Deshalb ein paar Rückfragen:
- Ist "exampleOne" der Name eines Web Service Consumer, der auf dem WSDL-File des Web Service Providers basiert?
- "machWas()" wäre dann folglich eine Methode dieses Services?
Entweder sind diese Annahmen nicht ganz richtig oder ich mache sonst Fehler. Ich habe aus dem Web Service Provider die WSDL-Datei exportiert und diese in einen neuen Web Service Consumer importiert:
%INCLUDE "lsxsd.lss"
Class HelloClass As PortTypeBase
Sub NEW
Call Service.Initialize ("UrnDefaultNamespaceHelloClassService", _
"HelloClassService.Domino", "http://localhost", _
"HelloClass")
End Sub
Function HELLOFUNCTION() As String
Let HELLOFUNCTION = Service.Invoke("HELLOFUNCTION")
End Function
End Class
Dann habe ich den folgenden LS-Agenten erstellt.
Option Public
Option Declare
Use "HelloServiceConsumer"
Sub Initialize
Dim ws As New HelloClass
Call ws.Hellofunction()
End Sub
Das Ergebnis des Aufrufs ist allerdings ernüchternd: "Web Service HelloClass method HELLOFUNCTION error (404) Not found". Bin ich meilenweit oder nur ein paar Meter vom Ziel weg?
Gruss
Ruedi
Mitch:
Hey Ruedi,
Achtung, ganz unqualifiziert, da ich auch gerade erstmalig mit Webservices experimentiere.
Ich habe in meinem Test-Skript noch das hier stehen, um den Pfad zum Webservice zu setzen:
--- Code: ---ws.SetEndPoint("http://subdomain.example.com/Path/database.nsf/WebService")
--- Ende Code ---
Vielleicht hilft das ja schon.
Gruß,
Mitch
Edit: Ich habe dieses schöne PDF zum Thema Webservices von WernerMo und Tim Pistor verwendet, sehr hilfreich: http://www.entwicklercamp.de/konferenz/ent2010.nsf/bc36cf8d512621e0c1256f870073e627/ab8fbbcda27d61b9c1257662004cf93f/$FILE/T2S8-Webservices.pdf
Ruedi:
Hallo Mitch
Bingo! So funktionierts. Vielen Dank.
Ich muss also entwder im Web Service Consumer den Paramter "http://localhost" durch die URL des Web Services ersetzen oder eben - viel besser - die URL mit ws.SetEndPoint setzen.
Also einen Schritt weiter. Das nächste Problem lauert sicher schon ...
Gruss
Ruedi
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln