Laden...

Soap Antwortnachricht stimmt nicht mit Binding überein

Erstellt von joshua vor 6 Jahren Letzter Beitrag vor 6 Jahren 7.240 Views
J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren
Soap Antwortnachricht stimmt nicht mit Binding überein

Hallo
Kennt jemand die Lösung für diesen Fehler, trotz such im Internet, habe ich keine Lösung gefunden:

Fehlermeldung:
Der Inhaltstyp "text/html; charset=utf-8" der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung (application/soap+xml; charset=utf-8) überein.

Danke

16.807 Beiträge seit 2008
vor 6 Jahren

Das Binding Deines WCF stimmt nicht. Steht ja auch da.

text/html ist halt nicht application/soap+xml.
Das, was der Server liefert, muss Dein Client auch konfiguriert haben.

2.078 Beiträge seit 2012
vor 6 Jahren

Ich wüsste auf Anhieb keine Antwort, aber ich hab dafür einen anderen Tipp:

http://unlocalize.com

Wenn ich deine Fehlermeldung nehme, vermutlich variable Inhalte durch string.Format-Placeholder (z.B. {0}) ersetze und danach suche, bekomme ich diese Ergebnis-Liste bzw. konkreter dieses Ergebnis.

Da kannst Du direkt nach der englischen Fehler-Variante suchen.
Ich hab z.B. diese Frage auf Stackoverflow gefunden:

WCF Service Client: The content type text/html; charset=utf-8 of the response message does not match the content type of the binding

Das sieht nach genau der Fehlermeldung aus, die Du auch hast.

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren
SOAP Fehlermeldung

Vielen Dank für den Hinweis.

Dann müsste ich den Request welcher als XML gesendet wird in einen String konvertieren?

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo joshua,

wie schaut denn das Binding vom Client aus und wie jenes vom Server?

Der Client erwartet application/soap+xml, der Server sendet text/html. Gib im Browser einfach mal die Service-Adresse ein und schau was da kommt. Vllt. guckst du auch mit Fiddler und wenn dort auch als Antwort text/html kommt, so lässt sich die Antwort vllt. sogar per HttpClient verarbeiten.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 5, denn diese Info sollten bereits im Startbeitrag stehen, hier kennt keiner deinen Code und Konfig.

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!"

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren

Hallo ich habe das ganze nochmals von Beginn angeschaut und auch beim SOAP Anbieter nachgefrage.
er hat mir geschrieben das Loging müsse wie folgt aussehen:

<web:getText>
  <web:LoginInfo>
    <web:Benutzer>xxxxxxxx</Benutzer>
    <web:Passwort>xxxxxx</Passwort>
  </web:LoginInfo>
</web:getText>

das Login von SOAP sieht wie folgt aus:

namespace srGetText1
{
    [DebuggerStepThrough]
    [DesignerCategory("code")]
    [GeneratedCode("System.Xml", "4.7.2102.0")]
    [XmlType(Namespace = "http://www.muster.com/webservices")]
    public class tlogin : INotifyPropertyChanged
    {
        public tlogin();

        [XmlElement(Order = 0)]
        public string Benutzer { get; set; }
        [XmlElement(Order = 1)]
        public string Passwort { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName);
    }
}

Meine Frage wie muss das tlogin(Element) aufgerufen werden?
Wie muss das Objekt Element aussehen und wie erstelle ich es?
Vielen Dank für die Hilfe

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo joshua,

lass uns von vorn beginnen, so kann ich dem nicht folgen.

Hast du für den Webservice eine WSDL? Dann lässt sich daraus ein SOAP-Client generieren / erstellen.
Oder ist es ein HTTP-basierter Dienst, der XML verwendet? So schaut für mich das XML-Fragment für Login aus.

Das wären dann zwei (eher) verschiedene Dinge, die auch gesondert behandelt werden müssen.

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!"

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren
soap

Hallo Gü
Danke, ich habe vom Soap Provider eine url wo ich das WDSL FILE als Dienstverweis einbinden kann. Danach kann ich das tlogin aufrufen und paswort und user zuweisen. Danach muss ich für den request gettext(tlogin,tlists) /aufrufen.
Gruss joshua

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo joshua,

und dann kommt der Fehler aus dem ersten Beitrag? Zeig mal den Code dazu? Und auch wie du die Bindungen (app/web.config-Abschnitt system.servicemodel) konfigurierst.

Wie hast du auch den Dienstverweise eingebunden? Per Visual Studio oder?

Du musst uns die nötigen Informationen liefern damit wir dein Problem verstehen können und so dann eine Lösung finden können. Bedenke dabei dass wir dein Problem nur anhand dem kennen, was du uns hier zur Verfügung stellt. Daher meine Nachfragen. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 5, da ist das auch beschrieben.

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!"

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren

Hallo Gü

Das Vorgehen ist wie folgt:

  1. Neue ASP Projekt
  2. Dienstverweis hinzugügen-> url von SOAP Provider, Dienste erscheinen.
    Name Dienstverweis:srGetText
  3. ASP.NET Formular mit Button zum Starten des Dienstest
  4. Code:
    srGetText.clsGetTextSoapClient soap = new   srGetTextclsGetTextSoapClient(); 
       srGetText.tlogin benutzer = new srGetText.tlogin();
        srGetText.tlists Liste1 = new srGetText.tlists();
        List1.Items = new string[] { "TXT207706736636" };
        benutzer.Benutzer = "xxxxxxxxx";
        benutzer.Passwort = "xxxxxxxxx";
  1. tlogin sieht wie folgt aus:
  public class tlogin : INotifyPropertyChanged
    {
        public tlogin();

        [XmlElement(Order = 0)]
        public string Benutzer { get; set; }
        [XmlElement(Order = 1)]
        public string Passwort { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName);
    }

tlist sieht wie folgt aus:

   public class tlist : INotifyPropertyChanged
    {
        public tlist();

        [XmlElement("eText", Order = 0)]
        public string[] Items { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName);
    }
  1. Gemäss WDSL File Login mit :
response = soap.getTextLogin(benutzer,Liste1);
txtOutput.Text = BeispielText();

In welcher Form sind benutzer und Liste1 zu übergeben, siehe vorhergehende Mail(HTML)?
Ich hoffe es ist nun verständlicher, dank für die Bemühungen.
Joshua

2.298 Beiträge seit 2010
vor 6 Jahren

Stimmt denn die Url zum SOAP Service? Wenn nicht kommt es auch vor, dass einfach eine ASP.NET Fehlerseite aufgerufen wird die dann HTML zurück liefert. Hast du die Service-Adresse mal im Browser aufgerufen?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren
SOAP Zugriff

Ja, diese stimmt

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo joshua,

noch ist es mir nicht klar. Mir kommt das auch vom generierten Code her ungewohnt vor, zumindest ist mir das so noch nicht untergekommen -- das soll aber noch nicht viel heißen 😉

Ist die Url zum WebService geheim od. kannst du diese hier nennen? Dann kann ich konkret schauen. Credentials brauch ich keine, denn bei irgendwelchen Dummy-Werten sollte als Response kommen dass es nicht geklappt hat aber damit lässt sich dann wenigsten das Problem für die Eingangsfrage eruieren.

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!"

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren
Soap

Dir url kann ich nicht angeben, ist von einem Institut..
Ich erhoffte mir es kann jemand weiterhelfen bezüglich tlogin und tlist.
Muss tlist und tlogin als Xml mittels XmlElement erfasst werden?

2.298 Beiträge seit 2010
vor 6 Jahren

Ohne weitere Informationen zu dem Webservice wird es schwer dir zu helfen. In der Regel ist es die richtige Vorgehensweise, sich den Proxy von Visual Studio generieren zu lassen, so wie du es auch gemacht hast.

Bzgl. deiner Frage: Es wurden Klassen für tlist und tlogin erstellt. Insofern sollte manuelles arbeiten mit Xml nicht notwendig sein.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

J
joshua Themenstarter:in
24 Beiträge seit 2010
vor 6 Jahren
Erledigt: Soap Antwortnachricht stimmt nicht mit Binding überein

Hallo
Nach längerem Suchen und Probieren, habe ich den Fehler gefunden:
Der SOAP dienst ist Version 1.1, somit darf im web.config

nicht:

   <bindings>
    <wsHttpBinding>
      <binding name="BasichHttpBinding_clsGetTerrisSoap">
        <security mode="Transport">
          <transport clientCredentialType="None"/>
        </security>
      </binding>
    </wsHttpBinding>
    </bindings>
<client>
      binding="wsHttpBinding"
      ......
</client>

sondern:

   <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_clsGetTerrisSoap">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
    <endpoint address="https://...."
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_...................."
      contract="serviceName"
      name="BasicHttpBinding_......../>
    </client>

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo joshua,

das hätte sich auch abkürzen lassen, wenn du tust worum du gefragt wurdest. Siehe

Zitat von: Soap Antwortnachricht stimmt nicht mit Binding überein | myCSharp.de
Und auch wie du die Bindungen (app/web.config-Abschnitt system.servicemodel) konfigurierst.

Aus diesem Grund ist [Hinweis] Wie poste ich richtig? Punkt 5 keine Regel um die Leute zu schikanieren, sondern -- v.a. -- um effizient Helfen zu können.

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!"