2010-11-24 59 views
1

J'essaie d'obtenir des données d'un serveur Web. Quand je vais via un navigateur, je vois une réponse comme:C# requête HTTP GET renvoyant des caractères cachés

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

Lorsque j'envoie une requête GET le résultat REVIENT:

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

Le code J'utilise est essentiellement:

// 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(); 

Y at-il un moyen facile de se débarrasser du \ n et du \ avant le ", ou dois-je faire une manipulation regex/chaîne sur la réponse?

Merci, Will

Répondre

1

Le « \ » avant les guillemets est simplement ce que vous verrez dans le débogueur et représente une citation échappé mark - pas de problème car il est uniquement à des fins d'affichage et ne sera pas présent en tant que caractère lors de la manipulation de chaînes. Le caractère '\ n' est un caractère de nouvelle ligne et il est réellement là. Si vous ne voulez pas dans la chaîne, vous pouvez le supprimer avec les éléments suivants:

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

est probablement ce que vous voyez dans débogueur Visual Studio. Vous n'avez pas besoin de vous débarrasser de quoi que ce soit. Aussi, vous pouvez simplifier votre code un peu parce que toutes ces ressources non aliéné dans votre échantillon pourraient laisser échapper des poignées non gérés:

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

Ceci est la présentation de la chaîne par votre IDE échappé comme vous le feriez en utilisant dans votre code où \ n Représente Line Break et \ "si le guillemet échappé, le navigateur reçoit également la même chaîne mais il affiche Newlines comme espace :)