Autor Thema: Fehler "White spaces are required between publicId and systemId"  (Gelesen 3433 mal)

Offline Ruedi

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
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
« Letzte Änderung: 02.11.11 - 13:06:41 von Ruedi »

Offline Tim Pistor

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
    • www.pistor.is - Tim Pistor IT-Beratung
Hallo Ruedi,

Dim ws As New exampleOne
Call ws.Setcredentials("user", "password")
Call ws.machWas()

Gruß Tim

Offline Ruedi

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
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

  • Gast
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")

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
« Letzte Änderung: 02.11.11 - 15:28:36 von Mitch »

Offline Ruedi

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
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

Offline Tim Pistor

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
    • www.pistor.is - Tim Pistor IT-Beratung
Die Beispieldatenbanken aus den PDFs kann ich Dir auch zumailen...

Offline Ruedi

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
Sehr gerne. Die Mail-Adresse steht in meinem Profil.

Vielen Dank
Ruedi

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Ruedi, Deine Mailadresse ist nicht öffentlich einsehbar - die siehst nur Du. Du solltest diese Einstellung auch so lassen und Tim eine persönliche Nachricht mit der Adresse zukommen lassen.

Bernhard

Offline Ruedi

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
Danke für den Hinweis.

Ruedi

Offline Ruedi

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
Zunächst allen Mitdenkern Dank für ihre Mithilfe. Dank dieser verstehe ich nun besser, wie Web Services funktionieren.

Noch eine Anschlussfrage: ist es möglich, im Web Service Explorer in Eclipse quasi die Funktionalität der Methode SetCredentials nachzubilden (d.h. mich zu authentifizieren)? Oder muss ich einfach sicherstellen, den Webservice in einer DB zu haben, auf den Anonymous Zugriff hat?

Danke
Ruedi

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz