web-dev-qa-db-fra.com

En-têtes de jeu WebClient

Comment définir un en-tête dans la classe webClient? J'ai essayé:

client.Headers["Content-Type"] = "image/jpeg";

qui jette une WebException

Mon code:

WebClient client = new WebClient();
client.Headers.Set("Content-Type", "image/png");
client.Headers.Set("Content-Length", length);
client.Headers.Add("Slug", name);
NameValueCollection nvc = new NameValueCollection();
nvc.Add("file", FileContents);

Byte[] data = client.UploadValues(url, nvc);
string res = Encoding.ASCII.GetString(data);
Response.Write(res);
25
The Mask

Si l'en-tête existe déjà:

client.Headers.Set("Content-Type", "image/jpeg");

si c'est un nouvel en-tête:

client.Headers.Add("Content-Type", "image/jpeg");

En outre, il est possible que vous obteniez une erreur car vous essayez de définir les en-têtes trop tard. Postez votre exception pour que nous puissions vous informer.

Mettre à jour

On dirait qu'il existe des restrictions étranges sur l'en-tête "Content-Type" avec la classe WebClient. Cherchez à utiliser les méthodes client.Download (DownloadData, DownloadFile, etc ...)

Vérifiez si l'utilisation de la méthode "UploadFile" sur le client Web fonctionne plutôt que manuellement. Il retourne l'octet de corps de respose [].

Si vous continuez à avoir des problèmes avec WebClient, essayez simplement d'utiliser un ancien ancien HttpRequest/HttpWebRequest.

38
jdc0589

Il semble que vous ne puissiez pas définir Content-type avec la méthode WebClient.UploadValues. Vous pouvez définir Content-type avec la méthode WebClient.UploadData

Utilisez quelque chose comme

Client.Headers["Content-Type"] = "application/json";
Client.UploadData("http://www.imageshack.us/upload_api.php", "POST", Encoding.Default.GetBytes("{\"Data\": \"Test\"}"));
12
sajith

Avez-vous essayé cette syntaxe: client.Headers.Add("Content-Type", "image/jpeg");

Quelle est votre trace de pile? À quel moment définissez-vous cela? Et sous quelle version de IIS/OS utilisez-vous?

0
Mrchief

Vous ne pouvez pas modifier le type de contenu si vous utilisez la méthode UploadValues. Il doit s'agir de l'application/x-www-form-urlencoded, voir code source du client Web enter image description here

0
syb