Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Soap Antwortnachricht stimmt nicht mit Binding überein
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

Soap Antwortnachricht stimmt nicht mit Binding überein

beantworten | zitieren | melden

Hallo
Kennt jemand die Lösung für diesen Fehler, trotz such im Internet, habe ich keine Lösung gefunden:
Fehler
Der Inhaltstyp "text/html; charset=utf-8" der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung (application/soap+xml; charset=utf-8) überein.

Danke
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von joshua am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.196

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Experte

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.847
Herkunft: Düsseldorf

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

SOAP Fehlermeldung

beantworten | zitieren | melden

Vielen Dank für den Hinweis.

Dann müsste ich den Request welcher als XML gesendet wird in einen String konvertieren?
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

soap

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von joshua am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

beantworten | zitieren | melden

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

5. 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);
    }
7. 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
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

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 | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

SOAP Zugriff

beantworten | zitieren | melden

Ja, diese stimmt
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

Soap

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

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 | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
joshua
myCSharp.de - Member



Dabei seit:
Beiträge: 24

Themenstarter:

Erledigt: Soap Antwortnachricht stimmt nicht mit Binding überein

beantworten | zitieren | melden

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>
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von joshua am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers