不要使用 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报表数据, ...
随机推荐
- Git - revert详解
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交 * git revert HEAD ...
- Create & use FTP service on Ubuntu(在Ubuntu上搭建并使用FTP服务)
Check if the FTP service has been installed.(检查是否已安装) Vsftpd --version If it has not install,Pres ...
- How To Add Swap Space on Ubuntu 16.04
Introduction One of the easiest way of increasing the responsiveness of your server and guarding aga ...
- angular5自适应窗口大小
import {AfterViewInit, Directive, ElementRef, HostBinding, HostListener, Inject, Input, Renderer2} f ...
- 第二课:PHP 安装
PHP 安装 您需要做什么? 为了开始使用 PHP,您可以: 找一个支持 PHP 和 MySQL 的 Web 主机 在您自己的 PC 机上安装 Web 服务器,然后安装 PHP 和 MySQL 使用支 ...
- 【nginx】 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
2013/10/22 20:05:49 [error] 12691#0: *6 FastCGI sent in stderr: "Primary script unknown" w ...
- Linux下的jdk安装
我使用的是CentOS7,jdk使用的是JDK1.8 下载好以后,将jdk传到我自己的目录:/home/tool下,通过 tar -xzvf jdk-8u131-linux-x64.tar.gz解压 ...
- Python基础学习总结__Day4
一.装饰器 前戏: 1.函数即变量 (1)函数名为‘门牌号’即内存地址,加括号开始调用 (2)没有变量调用将清空内存 (3)匿名函数(lambda函数):没有‘门牌号’,需要赋值给变量,否则将会被清空 ...
- selenium +python web自动化测试环境搭建
基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...
- 设置ubuntu12.04的dasher-自动隐藏,左上角
点击右上角的齿轮,--> “system setting”--“Appearance” 在“Look”标签中: Theme:Ambiance Launch icon size :32 选择桌面背 ...