2012-01-08 13 views
0

次のように私は、Webサービスに接続:Webサービスおよびエンコーディング

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(
    "http://mywebserviceaddress.com/attributes=someatt"); 
req.Method = "POST"; 
req.ContentType = "application/x-www-form-urlencoded"; 

using (StreamReader stIn = new StreamReader(
     req.GetResponse().GetResponseStream(),Encoding.UTF8)) 
{ 
     strResponse = stIn.ReadToEnd(); 
     return strResponse; 
} 

結果として、私のページに私は、次の問題を取得するので、私は(おそらく)悪いエンコーディングで応答を取得しかし、

encoding failure

私は何か間違っているのですか、それともサードパーティのWebサービスの問題ですか?この愚かな問題がなければ、私はどのようにしてレポンを得ることができますか?ここ は、デバッガからのスクリーンショットです:

enter image description here

+2

ページはどのようなエンコードですか?あなたはどのように反応を得てページに載せていますか? – Oded

+0

私はそれがページエンコーディングの問題ではないと思います。私がコードをデバッグすると、その段階のstrResponse変数には、エンコードされたWebサービスの値が間違っています。 –

+0

そのような場合には音がする可能性があります(本当にその情報を質問に追加してください)。あなたが読んでいるストリームがUTF8であると確信していますか? – Oded

答えて

1

ページは、おそらくUTF8ではありません。特殊文字はASCII文字の上半分を使用するように見えるので、ある種の古い文字セットです。読者が1バイトの特殊文字を要求しないため、UTF8として読み取るとエラーが発生します。

ストア変数と出力ContentTypeCharacterSetの内容にGetResponse()の結果。サーバーが正しく動作する場合は、このプロパティに使用されている文字セットが表示されます。次に、StreamReaderに正しい文字セットを使用できます。

+0

GetResponse()。ContentType = "text/xml"から次の結果を取得します。 System.Net.HttpWebResponseのCharacterSetが "ISO-8859-1"に設定されていることがわかります。ここに問題があるようです。それは...ですか? –

+0

私は、その財産は見ませんでした。したがって、応答の文字セットは* ISO-8859-1 *です。 Encoding.UTF8の代わりに 'Encoding.GetEncoding(" ISO-8859-1 ")'を使用してください。 – Yogu

+0

それは私にとって非常に奇妙なようです。エンコードを変更しましたが、次のような結果があります。 –

関連する問題