关于C# WebClient.OpenRead 的问题
答案:1 悬赏:50 手机版
解决时间 2021-11-12 05:40
- 提问者网友:未信
- 2021-11-11 16:02
关于C# WebClient.OpenRead 的问题
最佳答案
- 五星知识达人网友:执傲
- 2021-11-11 16:34
嗯 stream有这个报告 就是说提前遇到了 流结尾。
个人感觉还是你写的过程有问题
WebClient 在很多方面 都不如直接使用HttpWebRequest 类库
无论是开销以及 自定义的请求头等等方面
建议用 以下代码替换下 保证不再出现这个异常:如下
private void somefunciton (){
string geturl = gethashURL;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(geturl);
request.Timeout = 15000;
request.Method = "GET"; //支持全部谓词,甚至可以自定义,结合自己的web服务, WebClient功能有限
//以下可以自定义请求头部
request.ContentType = "application/x-www-form-urlencoded";
Stream myRequestStream = request.GetRequestStream();
//甚至可以向远程http请求 post传入 一个流
myRequestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();//获取cookie什么的
//response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));//自行进行编码转换
string retString = myStreamReader.ReadToEnd(); //这里决定了 肯定不会出现EndofStream异常。
myStreamReader.Close();//最后释放资源,当然用try catch finally 更科学
myResponseStream.Close();
}
个人感觉还是你写的过程有问题
WebClient 在很多方面 都不如直接使用HttpWebRequest 类库
无论是开销以及 自定义的请求头等等方面
建议用 以下代码替换下 保证不再出现这个异常:如下
private void somefunciton (){
string geturl = gethashURL;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(geturl);
request.Timeout = 15000;
request.Method = "GET"; //支持全部谓词,甚至可以自定义,结合自己的web服务, WebClient功能有限
//以下可以自定义请求头部
request.ContentType = "application/x-www-form-urlencoded";
Stream myRequestStream = request.GetRequestStream();
//甚至可以向远程http请求 post传入 一个流
myRequestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();//获取cookie什么的
//response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));//自行进行编码转换
string retString = myStreamReader.ReadToEnd(); //这里决定了 肯定不会出现EndofStream异常。
myStreamReader.Close();//最后释放资源,当然用try catch finally 更科学
myResponseStream.Close();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯