不要使用 reader.Peek() 去读取每行数据
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);
}
- public static string GetHttpWebResponse(string appUrl)
- {
- var wrWebRequest = WebRequest.Create(appUrl) as HttpWebRequest;
- if (wrWebRequest != null)
- {
- wrWebRequest.Timeout = wrWebRequest.Timeout * ;
- return GetHttpWebResponse(wrWebRequest);
- }
- return null;
- }
- public static string GetHttpWebResponse(HttpWebRequest wrWebRequest)
- {
- try
- {
- var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
- if (hwrWebResponse.StatusCode == HttpStatusCode.OK)
- {
- using (var srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()))
- {
- var builder = new StringBuilder();
- while (srResponseReader.Peek() > )
- {
- string line = srResponseReader.ReadLine();
- if (!String.IsNullOrEmpty(line))
- builder.Append(line);
- }
- srResponseReader.Close();
- return builder.ToString();
- }
- }
- return "";
- }
- catch (Exception ex)
- {
- //LOG
- return "";
- }
- }
最好使用下面的代码
- public static string GetHttpWebResponse(HttpWebRequest wrWebRequest)
- {
- try
- {
- var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
- if (hwrWebResponse.StatusCode == HttpStatusCode.OK)
- {
- using (var srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()))
- {
- var builder = new StringBuilder();
- while ((line = srResponseReader.ReadLine()) != null)
- {
- if (!String.IsNullOrEmpty(line))
- builder.Append(line);
- }
- srResponseReader.Close();
- return builder.ToString();
- }
- }
- return "";
- }
- catch (Exception ex)
- {
- //LOG
- return "";
- }
- }
或者一次性读出流:srResponseReader.ReadToEnd()
相关链接:
http://stackoverflow.com/questions/9376887/c-using-streamreader-to-read-line-from-txt-file-but-peek-return-1-even-the
不要使用 reader.Peek() 去读取每行数据的更多相关文章
- 关于C语言读取多行数据的问题
我有如下数据格式3360 2001 5 1750.5 1246.5 22.5 n 1775=1177-1316:13360 2001 5 1750.5 1 ...
- C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据
练习8.1:编写函数.接受一个istream&参数,返回值类型也是istream&.此函数必须从给定流中读取数据,直至遇到文件结束标识时停止. #include <iostrea ...
- ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据
使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.S ...
- Pandas_数据读取与存储数据(全面但不精炼)
Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...
- Pandas_数据读取与存储数据(精炼)
# 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...
- Python3实现从文件中读取指定行的方法
from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...
- 使用Properties去读取配置文件,并获得具体内容值
有时候,写了一个配置文件,需要知道读出来的内容对不对,我们需要测试一下,看看读出来的跟我们要的是不是一样.这里写了一个工具类,用来读取配置文件里面的内容. 一.使用Properties工具类来读取. ...
- R语言学习笔记:读取前n行数据
常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\ ...
- C#_.net core 3.0自定义读取.csv文件数据_解决首行不是标题的问题_Linqtocsv改进
linqtocsv文件有不太好的地方就是:无法设置标题的行数,默认首行就是标题,这不是很尴尬吗? 并不是所有的csv文件严格写的首行是标题,下面全是数据,我接受的任务就是读取很多.csv报表数据, ...
随机推荐
- REST Framework 处理一个超链接序列化问题
问题简述 翻译: 不正确的配置 无法使用视图名称“snippet-detail”解析超链接关系的URL.您可能没有在API中包含相关的模型,或者在该字段上错误地配置了' lookup field '属 ...
- 卸载firefox多余的搜索引擎
火狐默认了几个搜索引擎,百度,bing,yahoo等.搜一些技术方面的东西的时候,google返回的结果比这些要准确有用.所以想卸载掉那些不用的. 具体操作: 点击搜索栏,左侧搜索引擎图票右下角的倒三 ...
- linux学习-使用者身份切换
在 Linux 系统当中还要作身份的变换?这是为啥?可能有底下几个原因啦! 使用一般账号:系统平日操作的好习惯 用较低权限启动系统服务 软件本身的限制 由于上述考虑,所以我们都是使用一般账号登入系统的 ...
- bash实例
1写一个脚本,完成如下功能(使用函数):1.脚本使用格式:mkscript.sh [-D|--description "script description"] [-A|--aut ...
- Python虚拟机函数机制之位置参数的默认值(五)
位置参数的默认值 在Python中,允许函数的参数有默认值.假如函数f的参数value的默认值是1,在我们调用函数时,如果传递了value参数,那么f调用时value的值即为我们传递的值,如果调用时没 ...
- JAVA-基础(一)
1.一个变量可以声明为final,这样做的目的是阻止它的内容被修改.这意味着在声明final 变量的时候,你必须初始化它(在这种用法上,final类似于C/C++中的const). 例如: final ...
- web安全测试---WebScarab工具介绍
1.1 Webscarab [功能] WebScarab是一个用来分析使用HTTP和HTTPS协议的应用程序框架.其原理很简单,WebScarab可以记录它检测到的会话内容(请求和应答),并 ...
- 软件工程师应该关注的web攻击手段
1.SQL注入------常见的安全性问题. 解决方案:前端页面需要校验用户的输入数据(限制用户输入的类型.范围.格式.长度),不能只靠后端去校验用户数据.一来可以提高后端处理的效率,二来可以提高后端 ...
- ranorex官网
youtube FQ看ranorex https://demo.glyptodon.com 虚拟机 安卓实体 ranorex 只支持 Rxbrowser 我想操作安卓机器上的chrome 所以装了 ...
- day05_01 鸡汤+内容回顾
推荐电影: 1.被解救的姜戈 2.华尔街之狼 3.阿甘正传 4.辛德勒的名单 5.肖申克的救赎 6.上帝之城 7.焦土之城 8.绝美之城 打印多行 msg = "hello 1 hello ...