Laden...

Xml Datenaustausch zwischen Java Web Service und .Net Client

Erstellt von zipperle vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.663 Views
Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 12 Jahren
Xml Datenaustausch zwischen Java Web Service und .Net Client

Hallo zusammen, hoffe ihr könnt mir etwas Licht ins Dunkel bringen.

Ich muss auf einen Java Web Service (jaxws) per C# und .net 4.0 zugreifen, in einem der Aufrufe erhalte ich im Response ein ![CDATA[.....]]. Der content des CDATA ist ein XML, wie der Java Web Service dieses erstellt hat, kann ich nicht sagen(ist die Info wichtig?), muss auch noch erwähnen dass ich von Java keine Ahnung habe, sollte aber auch nicht notwendig sein. Das Schema zum XML habe ich.

Kann ich nun mit .net Serializern (welcher wäre zu empfehlen, auf was ist zu achten) oder anderen Tools (xsd.exe hab ich gelesen, ist das heutzutage die vorgehensweise?) die C# Klassenstruktur automatisch erstellen?
Wie funktioniert das genau? Muss wohl irgendwie mit dem XSD funktionieren oder gibt es da andere Wege?
Gibt es Kompatibilitätsprobleme?
Danach sollte es möglich sein gegen diese Typen impelementieren zu können!?
Und wie erstellt man zur Laufzeit die Objekte?

Und andersherum muss ich auch wiederum diese Objekte wieder als XML serialisieren und in das CDATA stecken.
Wie funktioniert das?

Hab noch nicht viel, mit Web Services gemacht. Die WSDL des Web Services muss ich doch einfach nur als Service Reference hinzufügen um Zugriff auf die Services des WS zugreifen zu können!? Muss man ein spezielles Projekttemplate verwenden?
Gibt es hier Komptibilitätsprobleme zwischen Java und .net.

Vielen Dank!

Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 12 Jahren

kleines update: die klassen konnte ich mit xsd.exe erstellen 😃 (trotzdem gibt es noch andere wege wie man dies realisieren kann?)
ansonsten stehen die anderen fragen noch offen...

16.834 Beiträge seit 2008
vor 12 Jahren

Zwar trifft Wer kann WCF konsumieren? nicht 100% auf Deine Frage, aber es geht in eine ähnliche Richtung.
Wenn Du einen Webservice direkt konsumierst - zB über SOAP bzw. WS* - so legt Dir Visual Studio bei der Anlage der Service Referenz automatisch alle Klassen und Typen an, die der Webservice zur Verfügung stellt.
Da brauchst Du keine xsd.exe

Dass der Webservice aber innerhalb einer XML-Struktur eine weitere, unabhängige XML-Struktur in einem CDATA-Feld beinhaltet - ist zumindest für mich irgendwie komisch.
Es sollte bei Technologie-übergreifenden Kommunikationen auch immer unabhängige/standardisierte Verfahren verwendet werden.

Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 12 Jahren

Danke für deine Antwort!
Das mit der Xml Struktur im CDATA meine ich gelesen zu haben, dass das nicht unüblich ist!? Gibts noch andere Meinungen dazu?

Also mit WCF hat das ganze wohl gar nichts zu tun, weil der service wohl ein (java) soap ist. woran auch immer man das erkennt?

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo zipperle,

Also mit WCF hat das ganze wohl gar nichts zu tun, weil der service wohl ein (java) soap ist.

WCF mit BasicHttpBinding entspricht einem SOAP-Service.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 12 Jahren

Danke für die Info!
Mittlerweile habe ich das auch rausgefunden, wenn man die WSDL als Servicer Referenz hinzufügt legt VS automatisch die app.config an, in der man dann die ganzen Bindings etc sieht die es auch be WCF gibt 😃

In der app.config konnte ich jetz auch das Zertifikat angeben und wo es zu finden ist. Das funktionioert, aber sobald ich einen Aufruf an den Webservice mache kommt es zur Excpetion: Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden.

Der Vorschlag der überall im Inet zu finden ist, den ServerCertificateValidationCallback zu implementieren und return true zu machen funkioniert nicht, der callback wird bei mir nie aufgerufen.

Kann mir jemand bitte sagen was falsch läuft?

Z
zipperle Themenstarter:in
47 Beiträge seit 2006
vor 12 Jahren

mittlerweile scheint mir die ursache klar zu sein, weis aber nicht wie ich es beheben kann.

ich habe zwei dateien, ein *.crt file das beinhaltet keinen private key, und ein file das beinhaltet das zertifikat und den key, die dateiendung dieses files ist *.txt. beim test mit soapUI wird dieses txt file angegeben und der webservice aufruf funktioniert.

in .net muss man das file ja in den windows zertifikatsspeicher imortieren und dann im app.config meines webservice client angeben. bisher habe ich das *.crt file im windows zertifikatsspeicher abgelegt, ist aber nutzlus für die authentifizierung beim webservice, da dieser das file mit dem zertifikat inkl private key, also das txt file benötigt.

Problem: das txt file läßt sich nicht im windows zertifikatsspeicher installieren. es kommt die Fehlermeldung "Der Dateityp ist nicht erkennbar.". Vermutlich weil es ein txt file ist. Wenn ich die dateiendung umbenne in p12 oder pfx ändert das leider auch nichts.

ich habe leider keinen einfluss auf die erstellung der zertifikatsdaeiten und muss mit denen klar kommen die mir gegebern sind.

könnt ihr mir sagen wie ich txt file in ein korrektes format bekomme?
andere idee wäre noch ein custombindung zu implementieren, so dass nicht das zertifkiat aus windows zertifikatsspeicher genommen wird, sondern von einem speziellen Festplattenort?