C#HTTP GET请求返回隐藏的字符

时间:2010-11-24 12:22:53

标签: c# .net regex httpwebresponse streamreader

我正在尝试从Web服务器获取一些数据。当我通过浏览器访问时,我看到了如下响应:

[ { "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和\之前的\,或者我必须对响应做一些正则表达式/字符串操作吗?

谢谢, 将

3 个答案:

答案 0 :(得分:3)

[ {\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 :(得分:1)

引号之前的'\'就是您将在调试器中看到的并表示转义的引号 - 没问题,因为它仅用于显示目的,并且在执行字符串操作时不会作为字符出现。 / p>

'\ n'字符是一个换行符,实际上就是这里。如果您不想在字符串中使用它,可以使用以下内容将其删除:

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

答案 2 :(得分:1)

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

这是您的IDE转义字符串的呈现方式,就像您在代码中使用它一样 \ n表示换行符和\“如果转义引号,浏览器也会收到相同的字符串,但它会将换行符显示为空格:)