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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich wüsste auf Anhieb keine Antwort, aber ich hab dafür einen anderen Tipp:
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:
Das sieht nach genau der Fehlermeldung aus, die Du auch hast.
Vielen Dank für den Hinweis.
Dann müsste ich den Request welcher als XML gesendet wird in einen String konvertieren?
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!"
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
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!"
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
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!"
Hallo Gü
Das Vorgehen ist wie folgt:
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";
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);
}
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
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 |
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!"
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?
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 |
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>
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!"