2016-07-01 32 views
1

Webサービスに以下のコードを書いて、投稿データを読み込みます。ここでの問題は、リクエストに特殊文字が含まれている場合はいつでも、「amé」と言えば、文字はam として置き換えられ、stringに変換されます。HttpContextの特殊文字を文字列に変換する

byte[] postData= HttpContext.Request.BinaryRead(HttpContext.Request.ContentLength); 
string strReq = Encoding.UTF8.GetString(postData); 

そして、私は以下のコードでWebサービスを呼び出す:

WebClient webClient = new WebClient(); 
webClient.Headers["Content-type"] = "text/xml; charset=utf-8"; 
webClient.Headers[HttpRequestHeader.Authorization] = credentials; 
string output = webClient.UploadString(url, "POST", input); 

答えて

0

あなたがそうでなければ、なりません、ポストデータはUTF-8でエンコードされたWebサービスに指定する必要がありますそれをUTF-8としてデコードすることができます。あなたのcontent-typeヘッダーの末尾にcharset=utf-8を追加すると、このトリックを行う必要があります。

'content-type': 'text/xml; charset=utf-8' 

JSONおよびフォームエンコードされたPOSTデータの仕様には、UTF-8が必要です。

+0

Thanx Mourndark ..éのようなポストデータの特殊文字がデコードされた文字列に反映されない点を除いて、上記のコードでポストデータをデコードすることができました –

+0

はい、ASCIIでエンコードされた通常のラテン文字は、 UTF-8で書かれているので、それは保証できません。私は、U + FFFD、無効な文字が見つかるたびに挿入されるUnicode置換文字です。詳細については、[この回答](http://stackoverflow.com/a/15022396/1096201)を参照してください。 – Mourndark

関連する問題