Domino 9 und frühere Versionen > ND6: Entwicklung

Zugriff auf Webservices

(1/2) > >>

topsys:
Hallo.

Hat jemand schon mal Erfahrungen mit Soapconnect & Webservices gemacht?
Ich möchte mittels SoapConnect mit einem NotesClient auf einen bestimmten Webservice zugreifen.

Problem:
Habe einen Beispiel-Webservice mit Microsoft dot.net auf einem Server laufen. Über eine erstellte dot.net asp Internetseite kann ich erfolgreich auf den Webservice zugreifen.
Nun möchte ich mit Soapconnect und Lotus Notes auf diesen Webservice zugreifen. Habe die Soapanfrage angepasst, erhalte aber immer folgende Fehlermeldung:
"Der Server hat den Wert des HTTP-Headers SOAPAction nicht erkannt"

Die Testbeispiele aus Soapconnect funktionieren.

Ich weiss leider nicht genau, wass alles angepasst werden muss.
Irgendwie sieht die Soap-Anfrage(Lotus) anders aus, als das was Microsoft erwartet.

Danke und Gruß
topsys

Axel Janssen temp:
Hi,
 
Ich versuche mit einem Agenten auf einen Axis-Webservice zuzugreifen, der auf Tomcat läuft. Der Agent benutzt Objekte des Microsoft SOAP Toolkit 3.0.
Da wurde der HTTP-Header auch nicht erkannt. :-[ Arbeite weiter dran.

Vielleicht ist das ein guter Weg für dich. Downloade einfach das MS SOAP Toolkit 3.0 und versuche dies einzubinden.
Es gibt einen The View Artikel vom (ich glaube März/April) 2003 der u.a. genau auch die Kombination ASP.NET Server, LoNo-Agent Client behandelt. Du kannst dir zumindest den Sourcecode von http://www.eview.com herunterladen.

<hoffe_es_wird_nicht_chinesisch>
Mit der Einbindung von einem jakarta-Axis-Client-Objekten in den Agenten geht es. Problem ist nur, daß es R6 only ist und man die XML4J.jar ersetzen muß. Keine Dauerlösung, aber zumindest wird das Projekt nicht aufgehalten.

Soviel ich weiss basiert das Lotus SOAP Connect im Hintergrund auf irgendeinem Java-Toolkit, auch wenn man das mit LotusScript programmieren kann, oder? Muß man da nicht auch das XML4j.jar im LoNo Programmverzeichnis ersetzen, wie bei Axis?
</hoffe_es_wird_nicht_chinesisch>

Ich habe ähnliche Probleme wie du, glaub ich. Wir sollten in Kontakt bleiben.
Hier ist der code von meinem XML-Toolkit client (übersichtlich:  ;D)

--- Code: ---Set mySOAPClient = CreateObject("MSSOAP.SOAPClient")
mySOAPClient.mssoapinit("http://127.0.0.1:8080/axis/services/urn:EightBall?wsdl")
Msgbox mySOAPClient.getAnswer

--- Ende Code ---
Die entsprechenden MS-Klassen hast du automatisch, wenn das SOAP Toolkit installiert ist (ich mußte dafür erst Visual Studio installieren, sonst kam ein Fehler bei der Installation).  
Hier sind die wichtigen Elemente für das .wsdd file:

--- Code: ---<service name="urn:EightBall" provider="java:RPC">
  <parameter name="allowedMethods" value="getAnswer askQuestion"/>
  <parameter name="className" value="EightBall"/>
 </service>
 
--- Ende Code ---

get Answer ist im Javacode einfach eine Methode, ohne Argumente und mit String als Rückgabewert.

Viel Glück. Good Luck. Buena Suerte.  

Axel

topsys:
Hi,
sorry das ich mich jetzt erst melde. Hatte in den letzten Tagen wenig Zeit.  :'(

Ich habe einen Webservice zum Testen mit dem Visual Studio erstellt (ein Beipiel aus einem Buch). Glaube ich werde mal die Soapanfrage des Microsoft Webservice mit der des Testwebservice von Soapconnect vergleichen.
Ich vermute mal, das ich den JavaAgent etwas modifizieren muss. Habe leider (noch) keine Ahnung von Java.
Übrigens auf der Seite http://services.xmethods.net gibt es ein paar Webservices zum Testen teilw. incl. Beschreibung.

- Leider habe ich keine Möglichkeit um an den Artikel von "the View" heranzukommen, habe mir aber die Beispiele schon heruntergeladen (werde ich mir mal am Wochenende zu gemüte führen)

- Ja bei dem Soapconnector muss auch die XML4J.jar ausgetauscht werden.

Hätte auch interesse weiter in Kontakt zu bleiben.
Ich arbeite auf jeden Fall weiter daran.
Melde mich nach dem Wochende mal.

cu
topsys

Axel Janssen temp:
Hi,

Meine Erkenntnisse. Stand heute:
1. Interoperabilität von Webservices (etwa Java -- VB) ist weniger geklärt als z.B. Webservices Security.
 
2. Sehr geholfen hat mir ein TCP Monitor (s. Screenshot). Das ganze Automatisierungszeug funktioniert zur Zeit nur zum Teil und echt nicht so gut interoperabel. Im TCP Monitor sieht man die tatsächlich ausgetauschten SOAP-Dokumente.
Das Ding fungiert als Interceptor.
Es fängt requests vom client ab
Es zeigt den Inhalt des Requests
Sendet den Request an den Server
Fängt die Response ab
Zeigt den Inhalt des Response.
Leitet das Response an den Client weiter.

Ich benutze ein mitgeliefertes Tool des apache.webservices.Axis Toolkit (Java) als TCP Monitor. Zumindest Microsoft.NET sollte sowas ähnliches haben. Hab zum Bleistift per Zufall gesehen, daß BEA Weblogic sowas ähnliches hat.

3. Bin low level gegangen und benutze bis auf weiteres HTTPSocketConnections in Java als Webservices Client auf der Notes Seite.

4. Wenn Microsoft keinen TCP Monitor hat. Du brauchst Axis nicht wirklich zu installieren, um den TCP Monitor zum Laufen zu bringen. Ich kann posten wie, wenn es dich interessiert.

5. Das Microsoft SOAP Toolkit 3.0 benötigt proprietäre WSML zusätzlich zu den standardisierten WSDL Files auf der Serverseite. Deshalb hab ich das noch nicht zum Laufen gebraucht. Diese WSML Files werden offensichtlich von MS.NET nicht benötigt. Das Soap Toolkit ist wie gesagt für VB classic (ohne NET).

6. Wenn du bei dem Lotus SoapConnector das XML4J.jar austauschen mußt, dann wird dort unter der Haube Java verwendet wird.

Gruß Axel

topsys:
Hi,

habe das mit dem soapconnector erstmal auf eis gelegt.
versuche es mal mit dem soap toolkit von microsoft.
1. versuch: notes webserviceanfrage und webservice auf einem PC, klappt.
2. versuch: webservice auf einem pc und webservice aufruf über einen Notes server (soaptoolkit inst.), klappt nicht. klappt es vielleicht, wenn ich den serviceaufruf in einen agent packe?

zu 4. das mit dem tcp monitor ist vielleicht gar keine schlechte idee. habe auf der schnelle leider auf microsoft seite nichts vergeleichbares gefunden. wäre echt nett wenn du mir mal posten könntest, wie ich da dran komme  ;)  

zu 3. was ist HTTPSocketConnections in java? ist das ein http get/post aufruf?
habe es auch mit dem http get probiert, habe aber dann erfahren das es ein bug in der version 6.0.2 cf1 gibt. http get funktioniert dort nicht, war echt toll.

die beispiel db´s aus der "the view" sahen ganz gut aus, leider fehlt mir aber der text dazu.
hast du die beispiele schon einmal ausprobiert?

bleibe weiter am ball.

bis denn
topsys

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln