Hallo,
Ich ärgere mich jetzt seit mehren Tagen mit SOAP rum. Sämtliche Foren und Bücher die ich bisher durchforstet habe halfen mir nicht weiter. Vielleicht stelle ich mich auch einfach nur blöd an...
Ich muss einen Webservice schreiben der eine SOAP Nachricht übergeben bekommt. Die sieht in etwa so aus:
------=_Part_0_23641627.1164210640313
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <7E4E070B032D5994F858AA42F62BFD3C>
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><Formulardaten xmlns=""><Benutzer xmlns=""></Benutzer><ofsXX1_knr_std xmlns=""></ofsXX1_knr_std><b12c96nfBehoerde_Amt xmlns=""></b12c96nfBehoerde_Amt><b12c96nfBehoerde_Strasse xmlns=""></b12c96nfBehoerde_Strasse><b12c96nfBehoerde_PLZ_Ort xmlns=""></b12c96nfBehoerde_PLZ_Ort><b12c96nfBehoerde_Sachbea rbeiter_Name xmlns=""></b12c96nfBehoerde_Sachbearbeiter_Name><b12c96nfSach bearbeiter_Zimmernummer xmlns=""></b12c96nfSachbearbeiter_Zimmernummer><b12c96nfSachb earbeiter_Telefon xmlns=""></b12c96nfSachbearbeiter_Telefon><b12c96nfSachbearbe iter_Telefax xmlns=""></b12c96nfSachbearbeiter_Telefax><b12c96nfSachbearbe iter_E_Mail xmlns=""></b12c96nfSachbearbeiter_E_Mail><b12c96nfAntragstell er_Name xmlns="">Lindauer, Sebastian</b12c96nfAntragsteller_Name><b12c96nfAntragsteller_ Vorname xmlns=""></b12c96nfAntragsteller_Vorname><b12c96nfAntragstell er_Strasse xmlns="">Winzerstraße 54</b12c96nfAntragsteller_Strasse><b12c96nfAntragstell er_PLZ xmlns="">75217</b12c96nfAntragsteller_PLZ><b12c96nfAntragsteller_O rt xmlns="">Birkenfeld</b12c96nfAntragsteller_Ort><b12c96nfAntragsteller_E _Mail xmlns="">[email protected]</b12c96nfAntragsteller_E_Mail><b12c96nfAntragstelle r_Telefon xmlns=""></b12c96nfAntragsteller_Telefon><b12c96nfAntragstell er_Fax xmlns=""></b12c96nfAntragsteller_Fax></Formulardaten></soapenv:Body></soapenv:Envelope>
------=_Part_0_23641627.1164210640313
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-Id: <AE6A46625725C53EF70207E4D8E9277B>
%PDF-1.4
%âãÏÓ
1 0 obj <</Filter/DCTDecode/Type/XObject/Length 11581/BitsPerComponent 8/Height 400/ColorSpace/DeviceRGB/Subtype/Image/Width 131>>stream
ÿØÿà JFIF d d ÿì Ducky 4 ÿî Adobe dÀ ÿÛ „
usw...
Egal was ich anstelle, ich kann auf diese Nachricht nicht zugreifen. Sobald ich den Datentyp des übergebenen Parameters auf SoapMessage setze läuft der Webservice nicht mehr. Und bringt die für mich nichts sagende Fehlermeldung: Member System.Exception.Data vom Typ System.Collections.IDictionary kann nicht serialisiert werden, da es IDictionary implementiert.
Ich komm hier einfach nicht weiter...
Mein Webservice sieht momentan so aus:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
<System.Web.Services.WebService(Namespace:="http ://lk-to-ccdms.de/")> _
<System.Web.Services.WebServiceBinding(ConformsTo: =WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
Inherits System.Web.Services.Protocols.SoapHttpClientProtoc ol
<WebMethod()> _
Public Function Get_Soap(ByVal message As SoapMessage)
Dim new_message As String
new_message = message.ToString()
My.Computer.FileSystem.WriteAllText("c:\temp\test. txt", new_message, False)
Return Nothing
End Function
End Class
Ich will erstmal irgendwas auf dem Webservice kriegen. Die ankommende Soapmessage soll dann auseinandergenommen werden in die einzelnen übergeben Parameter und die Anhänge.
Ich habe auch eine Lösung als Javawebservice vorliegen, aber es muss zwingend ein .Net Webservice sein.
Funktionierendes Beispiel Java:
package de.formsolutions.interfaces.webservice;
import java.io.File;
import java.util.Iterator;
import javax.activation.DataHandler;
import javax.xml.messaging.JAXMServlet;
import javax.xml.messaging.ReqRespListener;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import org.apache.axis.attachments.AttachmentPart;
import com.burg.ofs2.tools.PathsObject;
public class WebServiceReceiver extends JAXMServlet implements ReqRespListener {
/**
* Irgendeine ID - nicht benutzt
*/
private static final long serialVersionUID = 1L;
public SOAPMessage onMessage(SOAPMessage message) {
int atts = message.countAttachments();
System.out.println("***********");
System.out.println("Es sind " + atts + " Attachments angehänt!");
System.out.println("***********");
Iterator it = message.getAttachments();
usw...
Ich habe echt keine Idee mehr...
Ich ärgere mich jetzt seit mehren Tagen mit SOAP rum. Sämtliche Foren und Bücher die ich bisher durchforstet habe halfen mir nicht weiter. Vielleicht stelle ich mich auch einfach nur blöd an...
Ich muss einen Webservice schreiben der eine SOAP Nachricht übergeben bekommt. Die sieht in etwa so aus:
------=_Part_0_23641627.1164210640313
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <7E4E070B032D5994F858AA42F62BFD3C>
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><Formulardaten xmlns=""><Benutzer xmlns=""></Benutzer><ofsXX1_knr_std xmlns=""></ofsXX1_knr_std><b12c96nfBehoerde_Amt xmlns=""></b12c96nfBehoerde_Amt><b12c96nfBehoerde_Strasse xmlns=""></b12c96nfBehoerde_Strasse><b12c96nfBehoerde_PLZ_Ort xmlns=""></b12c96nfBehoerde_PLZ_Ort><b12c96nfBehoerde_Sachbea rbeiter_Name xmlns=""></b12c96nfBehoerde_Sachbearbeiter_Name><b12c96nfSach bearbeiter_Zimmernummer xmlns=""></b12c96nfSachbearbeiter_Zimmernummer><b12c96nfSachb earbeiter_Telefon xmlns=""></b12c96nfSachbearbeiter_Telefon><b12c96nfSachbearbe iter_Telefax xmlns=""></b12c96nfSachbearbeiter_Telefax><b12c96nfSachbearbe iter_E_Mail xmlns=""></b12c96nfSachbearbeiter_E_Mail><b12c96nfAntragstell er_Name xmlns="">Lindauer, Sebastian</b12c96nfAntragsteller_Name><b12c96nfAntragsteller_ Vorname xmlns=""></b12c96nfAntragsteller_Vorname><b12c96nfAntragstell er_Strasse xmlns="">Winzerstraße 54</b12c96nfAntragsteller_Strasse><b12c96nfAntragstell er_PLZ xmlns="">75217</b12c96nfAntragsteller_PLZ><b12c96nfAntragsteller_O rt xmlns="">Birkenfeld</b12c96nfAntragsteller_Ort><b12c96nfAntragsteller_E _Mail xmlns="">[email protected]</b12c96nfAntragsteller_E_Mail><b12c96nfAntragstelle r_Telefon xmlns=""></b12c96nfAntragsteller_Telefon><b12c96nfAntragstell er_Fax xmlns=""></b12c96nfAntragsteller_Fax></Formulardaten></soapenv:Body></soapenv:Envelope>
------=_Part_0_23641627.1164210640313
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-Id: <AE6A46625725C53EF70207E4D8E9277B>
%PDF-1.4
%âãÏÓ
1 0 obj <</Filter/DCTDecode/Type/XObject/Length 11581/BitsPerComponent 8/Height 400/ColorSpace/DeviceRGB/Subtype/Image/Width 131>>stream
ÿØÿà JFIF d d ÿì Ducky 4 ÿî Adobe dÀ ÿÛ „
usw...
Egal was ich anstelle, ich kann auf diese Nachricht nicht zugreifen. Sobald ich den Datentyp des übergebenen Parameters auf SoapMessage setze läuft der Webservice nicht mehr. Und bringt die für mich nichts sagende Fehlermeldung: Member System.Exception.Data vom Typ System.Collections.IDictionary kann nicht serialisiert werden, da es IDictionary implementiert.
Ich komm hier einfach nicht weiter...
Mein Webservice sieht momentan so aus:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
<System.Web.Services.WebService(Namespace:="http ://lk-to-ccdms.de/")> _
<System.Web.Services.WebServiceBinding(ConformsTo: =WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
Inherits System.Web.Services.Protocols.SoapHttpClientProtoc ol
<WebMethod()> _
Public Function Get_Soap(ByVal message As SoapMessage)
Dim new_message As String
new_message = message.ToString()
My.Computer.FileSystem.WriteAllText("c:\temp\test. txt", new_message, False)
Return Nothing
End Function
End Class
Ich will erstmal irgendwas auf dem Webservice kriegen. Die ankommende Soapmessage soll dann auseinandergenommen werden in die einzelnen übergeben Parameter und die Anhänge.
Ich habe auch eine Lösung als Javawebservice vorliegen, aber es muss zwingend ein .Net Webservice sein.
Funktionierendes Beispiel Java:
package de.formsolutions.interfaces.webservice;
import java.io.File;
import java.util.Iterator;
import javax.activation.DataHandler;
import javax.xml.messaging.JAXMServlet;
import javax.xml.messaging.ReqRespListener;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import org.apache.axis.attachments.AttachmentPart;
import com.burg.ofs2.tools.PathsObject;
public class WebServiceReceiver extends JAXMServlet implements ReqRespListener {
/**
* Irgendeine ID - nicht benutzt
*/
private static final long serialVersionUID = 1L;
public SOAPMessage onMessage(SOAPMessage message) {
int atts = message.countAttachments();
System.out.println("***********");
System.out.println("Es sind " + atts + " Attachments angehänt!");
System.out.println("***********");
Iterator it = message.getAttachments();
usw...
Ich habe echt keine Idee mehr...
Comment