2010-11-24 7 views
1

Webサーバーからデータを取得しようとしています。隠し文字を返すC#HTTP GETリクエスト

[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n" 

私が使用していたコードは、基本的には次のとおりです:

// Create a request for the URL. 
WebRequest request = WebRequest.Create(fullUrl); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
// Get the stream containing content returned by the server. 
Stream dataStream = response.GetResponseStream(); 
// Open the stream using a StreamReader for easy access. 
StreamReader reader = new StreamReader(dataStream); 
// Read the content. 
string responseFromServer = reader.ReadToEnd(); 
私は結果が戻ってくるGETリクエストを送信すると

[ { "x": "1" ,"y" : "2" ,"z" : "3" } ] 

:私はブラウザを介して行くとき、私は次のように応答を参照してください

\ nと\の前に\を取り除く簡単な方法はありますか、レスキューで正規表現/文字列の操作を行う必要はありますか?

おかげで、 ウィル

答えて

1

「\」引用符の前に、デバッガで見ると、エスケープ引用符を表しますどのような単純ですmark - 表示目的のための問題ではなく、文字列操作を実行するときは文字として存在しません。

'\ n'文字は改行文字であり、実際にはそこにあります。

responseFromServer = responseFromServer.Replace("\n", string.Empty); 
3
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n" 

は、Visual Studioデバッガで見たものと考えられます。あなたは何かを取り除く必要はありません。あなたのサンプル中のすべてのものをundisposedのリソースが管理対象外のハンドルをリークする可能性があるため、また、あなたはあなたのコードを少し簡略化することができます:

using (var client = new WebClient()) 
{ 
    string responseFromServer = client.DownloadString(fullUrl); 
} 
1
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n" 

これはあなたのコード \ nはそれを使用してだろうがとあなたのIDEによって、文字列の提示がエスケープされて:あなたは、文字列でそれをしたくない場合は、次のようにそれを削除することができます改行を表し、エスケープされた引用符の場合はブラウザも同じ文字列を受け取りますが、改行をスペースとして表示します:)

関連する問題