web-dev-qa-db-ja.com

WebClientセットヘッダー

webClientクラスにヘッダーを設定するにはどうすればよいですか?私は試した:

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

WebExceptionをスローします

私のコード:

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);
30
The Mask

ヘッダーが既に存在する場合:

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

新しいヘッダーの場合:

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

また、ヘッダーの設定が遅すぎるため、エラーが発生する可能性があります。例外を投稿してお知らせください。

更新

WebClientクラスの「Content-Type」ヘッダーには奇妙な制限があるようです。 client.Downloadメソッド(DownloadData、DownloadFileなど)の使用を確認してください。

手動で行うのではなく、webclientで「UploadFile」メソッドが機能するかどうかを確認します。それは、respose body byte []を返します。

WebClientで引き続き問題が発生する場合は、単純な古いHttpRequest/HttpWebRequestを使用して正当化してみてください。

41
jdc0589

WebClient.UploadValuesメソッドでContent-typeを設定できないようです。 WebClient.UploadDataメソッドでContent-typeを設定できます

次のようなものを使用します

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

この構文を試しましたか:client.Headers.Add("Content-Type", "image/jpeg");

あなたのスタックトレースは何ですか?これをどの時点で設定していますか?また、IIS/OSのどのバージョンで実行していますか?

0
Mrchief

UploadValuesメソッドを使用する場合、Content-Typeを変更できません。application/ x-www-form-urlencodedである必要があります。webclientソースコードを参照してください enter image description here

0
syb