CET HTTP GET-запрос, возвращающий скрытые символы - PullRequest
1 голос
/ 24 ноября 2010

Я пытаюсь получить данные с веб-сервера. Когда я иду через браузер, я вижу ответ как:

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

Когда я отправляю запрос 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();

Есть ли простой способ избавиться от \ n и \ before ", или мне нужно выполнить какие-то манипуляции с регулярными выражениями / строками в ответе?

Спасибо, Будет

Ответы [ 3 ]

3 голосов
/ 24 ноября 2010
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n"

- это, вероятно, то, что вы видите в отладчике Visual Studio. Вам не нужно ни от чего избавляться. Также вы могли бы немного упростить ваш код, потому что все эти нераспределенные ресурсы в вашем образце могут утечь неуправляемые дескрипторы:

using (var client = new WebClient())
{
    string responseFromServer = client.DownloadString(fullUrl);
}
1 голос
/ 24 ноября 2010
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n"

Это представление строки в вашей среде IDE, которое вы экранировали, как если бы вы использовали его в своем коде, где \ n Представляет разрыв строки и \ ", если кавычка экранирована, браузер также получает ту же строку, но отображает символы новой строки в виде пробела:)

1 голос
/ 24 ноября 2010

'\' перед кавычками - это просто то, что вы увидите в отладчике, и представляет собой экранированную кавычку - нет проблем, так как это только для целей отображения и не будет присутствовать как символ при выполнении строковых манипуляций.

Символ '\ n' - это символ новой строки, и он действительно есть. Если вы не хотите, чтобы оно было в строке, вы можете удалить его с помощью следующего:

responseFromServer = responseFromServer.Replace("\n", string.Empty);
...