2009-10-20 3 views
9

Um mit einem Drittanbieter-Dienst zu verbinden, muss ich einen Https Post machen. Eine der erforderlichen Voraussetzungen besteht darin, einen benutzerdefinierten Inhaltstyp zu senden.So legen Sie den WebClient Content-Type-Header fest?

Ich benutze WebClient, aber ich kann nicht finden, wie man es einstellt. Ich habe versucht, eine neue Klasse zu erstellen und die CreateRequest-Methode zu überschreiben, aber die Anforderung wird abgebrochen.

Gibt es eine Möglichkeit, das zu tun, ohne CopyHeadersTo-Methode neu schreiben zu müssen?

Vielen Dank im Voraus

EDIT CopyHeaderTo ist eine Methode, die ich mit .NET Reflector gesehen habe. Es wird von GetWebRequest aufgerufen und setzt alle Request Header, einschließlich Content-Type, von privaten Eigenschaften ab.

Antwort

1

Nun, verpasste ich gerade Request.ContentType Eigenschaften. Wenn die Methode GetWebRequest überschrieben wird, wird ContentType auf den gewünschten Wert gesetzt.

Noch funktioniert die Verbindung mit Dritten nicht. Geh Figuren.

Danke!

31

Sie könnten versuchen, die Headers Sammlung hinzuzufügen.

myWebClient.Headers.Add("Content-Type","application/xxx"); 
+3

Das wirft eine WebException, sagen, dass Content-Type nicht für aktuelle Petition geändert werden kann. –

+0

Wer wirft diese Ausnahme? Ist es das Server-Skript, auf das du schreibst? Ich habe das Beispiel in MSDN getestet und erfolgreich den Content-Type-Header auf einen benutzerdefinierten Wert festgelegt. –

+0

Ich musste dies tun: _client.Headers ["Content-Type"] = "application/Json" Immer noch nicht richtig funktioniert, aber zumindest kompiliert es! Arbeiten in Silverlight 5. – RaoulRubin

5

webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"

1

begegne ich das auch. Und Sie müssen Client Http verwenden, sonst wird Browser Http die Änderung des Inhaltstyps aus Sicherheitsgründen blockieren. This MSDN link erklären, dass.