Laden...

SOAP Anfrage nicht korrekt

Erstellt von Kriz vor 2 Jahren Letzter Beitrag vor 2 Jahren 460 Views
K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor 2 Jahren
SOAP Anfrage nicht korrekt

Hallo zusammen,

folgendes Problem:
Ich muss an eine SOAP Schnittstelle Daten senden, bekomme aber als Antwort immer nur


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>The configured protocol is not SOAP, which has been requested.</faultstring>
      </S:Fault>
   </S:Body>
</S:Envelope>

Leider kenne ich mich nicht mit SOAP aus und wenn ich die Fehlermeldung google, bekomme ich gar keine passende Antwort. Ich weiß noch nicht einmal an welcher Stelle ich den Fehler suchen muss, liegt es an meinem Code, oder an der übermittelten Datei?

Mein Code:


                XmlDocument Doc = new XmlDocument();
                Doc.InnerXml = result.ToString();

                HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(PriceURL);
                Req.Headers.Add("SOAPAction", "");
                Req.ContentType = "text/xml;charset=\"utf-8\"";
                Req.Accept = "text/xml";
                Req.Method = "POST";
                Req.Timeout = 10000;
                Req.ClientCertificates.Add(Certi);
                
                using (var streamWriter = new StreamWriter(Req.GetRequestStream()))
                {
                    streamWriter.Write(Doc);
                }

                //Überprüfen ob API Daten korrekt erhalten hat
                using (var response = (HttpWebResponse)Req.GetResponse())
                {
                    using (var streamReader = new StreamReader(response.GetResponseStream()))
                    {
                        var json = streamReader.ReadToEnd();

                    }
                }

das Feld "result" vom Typ StringBuilder

Bevor es jetzt wieder böse Kommentare kommen:
Ich hab das Projekt aufs Auge gedrückt bekommen, das wurde vor 13 Jahren mal geschrieben und seit dem war da keiner mehr dran, nun soll ich als Service und WPF portieren. Bis jetzt hatte ich auch noch nie irgendwelche Berührungspunkte mit SOAP und werde es danach auch nicht mehr haben.
Ich kann "The configured protocol is not SOAP, which has been requested." übersetzen, weiß aber weder wo dieses Protokoll konfiguriert wird/wurde, noch von welcher Seite es verlangt wird/wurde.

Schonmal vielen Dank im Vorraus!
Kriz

T
2.219 Beiträge seit 2008
vor 2 Jahren

Du brauchst bei SOAP und C# eigentlich keinen WebRequest basteln.
Du kannst dir die Metadaten des Service i.d.R. ziehen und dir die Proxy Klassen daraus erstellen lassen.
Das dürfte viel einfacher sein und du sparst dir das Request gebastel 😉

Im einfachsten Fall kommst du an die Metadaten wenn du ans die Url ein ?wsdl anhängst.

Nachtrag:
Doku zum Thema Serialisierung und SOAP:
XML- und SOAP-Serialisierung

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.807 Beiträge seit 2008
vor 2 Jahren

.. vor allem nicht mit dem WebRequest, den man seit 127 Jahren nicht mehr nutzen soll.
=> HttpClient Klasse (System.Net.Http)

=> Integrating with SOAP web services in .NET Core (Gilt für alle WSDL SOAP Endpunkte)

wenn ich die Fehlermeldung google, bekomme ich gar keine passende Antwort

Wenig Treffer => Hinweis, dass es eine Custom Error Message ist, und nicht von Standard SOAP.

Bis jetzt hatte ich auch noch nie irgendwelche Berührungspunkte mit SOAP und werde es danach auch nicht mehr haben.

Musst Dich halt trotzdem mit einer Technologie auseinander setzen, um Aufgaben erfüllen zu können.
Das kommt niemanden einfach so zugeflogen 🙂

K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor 2 Jahren

Ok, danke für die Hinweise!