Gibt es eine Möglichkeit, den Inhaltstyp der Antwort zu erhalten oder umgekehrt den Inhaltstyp einer ausgehenden Anfrage in Silverlight mit dem WebClient zu setzen?C# Silverlight WebClient erhält Inhalt - Antworttyp?
bearbeiten
Ich brauche HTTP-Anfragen und in der Lage zu zeigen, Fortschritte für sie zu machen. Ich möchte die Maschinerie, um die Anfragen zu machen, in ein generisches Modul verpacken und überall in meinem Code verwenden. Das habe ich schon gemacht. Die Schwierigkeit scheint zu sein, wenn ich verschiedene Arten von Daten an den Server in POST sende Ich habe keine Möglichkeit, dem Server zu sagen, was die Daten sind (JSON, XML, Formular kodieren, binär)
Ich glaube, ich kann damit umgehen Übergeben Sie mit der Anfrage "content-type = x" und legen Sie fest, dass der Server dies dem Content-Type-Header vorzieht.
Ich habe auch keine Möglichkeit zu wissen, welche Art von Inhalt der Server antwortet, ich denke, ich kann das lösen, indem ich den erwarteten Typ der Daten übergebe, wenn ich eine Anfrage mache.
Wenn jemand eine bessere Lösung hat, bitte sprechen :)
/bearbeiten
Hier meine missliche Lage ist. Die HttpWebRequest/Response-Objekte implementieren eine interne Schnittstelle, die es ermöglicht, den Fortschritt der Anfrage zu überwachen. Wenn Sie große Anfragen stellen möchten, ist es sehr wichtig, dass der Benutzer eine Fortschrittsleiste sehen kann, die den Status des Downloads/Uploads anzeigt.
Also mit HttpWebRequest/Response ist out. Nur WebClient zu lassen, aber ich finde einige merkwürdige Dinge darüber.
Es kann nicht unterklassifiziert werden. Es ist nicht wirklich versiegelt, aber der Konstruktor ist mit [SecuritySafeCritical] markiert, was, soweit ich das beurteilen kann, bedeutet, dass ich ihn nicht von einer abgeleiteten Klasse aufrufen kann. Zumindest habe ich versagt und andere bei Google gefunden, die gescheitert sind, aber ich würde mich sehr freuen, in diesem Punkt falsch zu sein.
Intern verwendet es BrowserHttpWebResponse, das die abstrakte Header-Eigenschaft nicht überschreibt, und WebClient.ResponseHeaders leitet nur an m_Response.Headers weiter, die NotImplementedException nur auslöst.
Nicht sicher, Content-Type wäre sogar in ResponseHeaders, aber ich hätte es gerne überprüft.
Es scheint, dass wir die unglückliche Wahl haben, Fortschrittsinformationen oder Content-Type-Informationen zu haben, aber nicht beide in Silverlight.
Gemäß den Dokumenten scheint es auch keine Möglichkeit zu geben, Content-Type auf die ausgehende Anfrage entweder mit dem WebClient zu setzen. Content-Type ist als eingeschränkter Header aufgeführt. Ich habe das allerdings noch nicht getestet.
Obwohl es interessant ist, dass bei einem Fehler zu beachten, den Sie tatsächlich das Objekt Antwort übergeben bekommen und haben Zugriff auf Statuscode, Content-Type usw.
Was möchten Sie erreichen? Was ist dein ultimatives Ziel? Sie haben erklärt, welche Methoden Sie ausprobiert haben, aber Sie haben nicht erklärt, was Sie vorhaben. –