WebClientを使用してWebアプリケーションにファイルをアップロードする必要があるプロジェクトで作業しています。WebClientを使用してSLUGヘッダーのエンコーディングを設定する方法
私は次のコードを試しましたが、サーバーはslugヘッダーに定義されている特殊文字を認識せず、印刷可能でない他の文字で置き換えます。
WebClient.Headers.Clear();
WebClient.Headers.Add("Content-Type",GetMimeType(Path.GetExtension("aáñÑ.pdf")));
WebClient.Headers.Add("Accept", "*/*");
WebClient.Headers.Add("Referer", myRefererURL);
WebClient.Headers.Add("x-csrf-token", "securityTokenFromModel");
WebClient.Headers.Add("slug", "aáñÑ.pdf");
はまた、RFC2047(http://www.ietf.org/rfc/rfc2047.txt)を読んだ後、私は次のコードで最後の行を置き換えますが、サーバーは要求を認識し、エラーを返していません。
WebClient.Headers.Add("slug", "(=?ISO-8859-1?q?" + "aáñÑ.pdf" + "?=)");
エンコーディング文字セットを設定して、スラッグヘッダーに特殊文字(アクセント、スペイン語文字)を使用できるもう1つの方法はありますか?
編集:
WebClient.Headers.Add("slug", "The Beach at S%C3%A8te");
しかし、Webアプリケーションは正確にファイル名を設定しています:
@Julian答えを読んだ後、私はこのように見えるようにスラグのヘッダーを変更しようとした「ビーチのS%でC3%A8te」となる。別の試験で
が、これはフィドラーは、ファイル名 "DocumentaciónÑñ.docx" を使用して要求を示した方法です:Internet Explorerの11で作られた
要求:.NETによって作らOK
リクエストWebクライアントとGoogle Chromeの:ERROR答えはSPである
をあなたはSystem.Web.HttpUtility 'によってスラグ値を脱出しようとしたことがありWebClient.Headers.Add( "slug"、 "(=?ISO-8859-1?q?" + System.Web.HttpUtility.HtmlEncode( "aññ.pdf")+ "?=)"); '。this。 –
ありがとう@Aliしかし、それは動作しませんでした。WebClient.Headers.Add(" slug "、"(=?ISO-8859-1?q? "+ System.Web。 WebClient.Headers.Add( "slug"、 "(System.Web.HttpUtility.HtmlEncode("aññ.pdf "));サーバーからエラーを返します。 "));ファイル名にエンコードされた文字を設定します。 –
私はあなたが必要と思います送信する前にファイル名を 'ISO-8859-1'にエンコードします。これをチェックする:http://stackoverflow.com/questions/629617/how-to-convert-string-to-iso-8859-1 –