1.问题描述

使用SteamRead的Peek()和ReadLine()来读取流中的数据,如果数据行数太多,会读取不完整(后面有些数据就读不出来了)。

比如:

while (srResponseReader.Peek() > 0)
{
  string line = srResponseReader.ReadLine();

  if (!String.IsNullOrEmpty(line))
  builder.Append(line);
}

最好使用:

while ((line = srResponseReader.ReadLine())!=null)
{

  if (!String.IsNullOrEmpty(line))
  builder.Append(line);
}

  1. public static string GetHttpWebResponse(string appUrl)
  2. {
  3. var wrWebRequest = WebRequest.Create(appUrl) as HttpWebRequest;
  4. if (wrWebRequest != null)
  5. {
  6. wrWebRequest.Timeout = wrWebRequest.Timeout * ;
  7. return GetHttpWebResponse(wrWebRequest);
  8. }
  9. return null;
  10. }
  1. public static string GetHttpWebResponse(HttpWebRequest wrWebRequest)
  2. {
  3. try
  4. {
  5. var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
  6.  
  7. if (hwrWebResponse.StatusCode == HttpStatusCode.OK)
  8. {
  9. using (var srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()))
  10. {
  11. var builder = new StringBuilder();
  12. while (srResponseReader.Peek() > )
  13. {
  14. string line = srResponseReader.ReadLine();
  15.  
  16. if (!String.IsNullOrEmpty(line))
  17. builder.Append(line);
  18. }
  19. srResponseReader.Close();
  20. return builder.ToString();
  21. }
  22. }
  23. return "";
  24. }
  25. catch (Exception ex)
  26. {
  27. //LOG
  28. return "";
  29. }
  30. }

最好使用下面的代码

  1. public static string GetHttpWebResponse(HttpWebRequest wrWebRequest)
  2. {
  3. try
  4. {
  5. var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
  6.  
  7. if (hwrWebResponse.StatusCode == HttpStatusCode.OK)
  8. {
  9. using (var srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()))
  10. {
  11. var builder = new StringBuilder();
  12. while ((line = srResponseReader.ReadLine()) != null)
  13. {
  14. if (!String.IsNullOrEmpty(line))
  15. builder.Append(line);
  16. }
  17. srResponseReader.Close();
  18. return builder.ToString();
  19.  
  20. }
  21. }
  22. return "";
  23. }
  24. catch (Exception ex)
  25. {
  26. //LOG
  27. return "";
  28. }
  29. }

或者一次性读出流:srResponseReader.ReadToEnd()

相关链接:

http://stackoverflow.com/questions/9376887/c-using-streamreader-to-read-line-from-txt-file-but-peek-return-1-even-the

不要使用 reader.Peek() 去读取每行数据的更多相关文章

  1. 关于C语言读取多行数据的问题

    我有如下数据格式3360  2001     5   1750.5   1246.5  22.5  n    1775=1177-1316:13360  2001     5   1750.5   1 ...

  2. C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据

    练习8.1:编写函数.接受一个istream&参数,返回值类型也是istream&.此函数必须从给定流中读取数据,直至遇到文件结束标识时停止. #include <iostrea ...

  3. ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据

    使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.S ...

  4. Pandas_数据读取与存储数据(全面但不精炼)

    Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...

  5. Pandas_数据读取与存储数据(精炼)

    # 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...

  6. Python3实现从文件中读取指定行的方法

    from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...

  7. 使用Properties去读取配置文件,并获得具体内容值

    有时候,写了一个配置文件,需要知道读出来的内容对不对,我们需要测试一下,看看读出来的跟我们要的是不是一样.这里写了一个工具类,用来读取配置文件里面的内容. 一.使用Properties工具类来读取. ...

  8. R语言学习笔记:读取前n行数据

    常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\ ...

  9. C#_.net core 3.0自定义读取.csv文件数据_解决首行不是标题的问题_Linqtocsv改进

    linqtocsv文件有不太好的地方就是:无法设置标题的行数,默认首行就是标题,这不是很尴尬吗?   并不是所有的csv文件严格写的首行是标题,下面全是数据,我接受的任务就是读取很多.csv报表数据, ...

随机推荐

  1. REST Framework 处理一个超链接序列化问题

    问题简述 翻译: 不正确的配置 无法使用视图名称“snippet-detail”解析超链接关系的URL.您可能没有在API中包含相关的模型,或者在该字段上错误地配置了' lookup field '属 ...

  2. 卸载firefox多余的搜索引擎

    火狐默认了几个搜索引擎,百度,bing,yahoo等.搜一些技术方面的东西的时候,google返回的结果比这些要准确有用.所以想卸载掉那些不用的. 具体操作: 点击搜索栏,左侧搜索引擎图票右下角的倒三 ...

  3. linux学习-使用者身份切换

    在 Linux 系统当中还要作身份的变换?这是为啥?可能有底下几个原因啦! 使用一般账号:系统平日操作的好习惯 用较低权限启动系统服务 软件本身的限制 由于上述考虑,所以我们都是使用一般账号登入系统的 ...

  4. bash实例

    1写一个脚本,完成如下功能(使用函数):1.脚本使用格式:mkscript.sh [-D|--description "script description"] [-A|--aut ...

  5. Python虚拟机函数机制之位置参数的默认值(五)

    位置参数的默认值 在Python中,允许函数的参数有默认值.假如函数f的参数value的默认值是1,在我们调用函数时,如果传递了value参数,那么f调用时value的值即为我们传递的值,如果调用时没 ...

  6. JAVA-基础(一)

    1.一个变量可以声明为final,这样做的目的是阻止它的内容被修改.这意味着在声明final 变量的时候,你必须初始化它(在这种用法上,final类似于C/C++中的const). 例如: final ...

  7. web安全测试---WebScarab工具介绍

    1.1      Webscarab [功能] WebScarab是一个用来分析使用HTTP和HTTPS协议的应用程序框架.其原理很简单,WebScarab可以记录它检测到的会话内容(请求和应答),并 ...

  8. 软件工程师应该关注的web攻击手段

    1.SQL注入------常见的安全性问题. 解决方案:前端页面需要校验用户的输入数据(限制用户输入的类型.范围.格式.长度),不能只靠后端去校验用户数据.一来可以提高后端处理的效率,二来可以提高后端 ...

  9. ranorex官网

    youtube FQ看ranorex https://demo.glyptodon.com 虚拟机   安卓实体 ranorex 只支持 Rxbrowser 我想操作安卓机器上的chrome 所以装了 ...

  10. day05_01 鸡汤+内容回顾

    推荐电影: 1.被解救的姜戈 2.华尔街之狼 3.阿甘正传 4.辛德勒的名单 5.肖申克的救赎 6.上帝之城 7.焦土之城 8.绝美之城 打印多行 msg = "hello 1 hello ...