关于C# WebClient.OpenRead 的问题

2025-02-26 12:31:20
推荐回答(1个)
回答1:

嗯 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传入 一个流
/*
StreamWriter myStreamWriter = new StreamWriter(myRequestStream);                
myStreamWriter.Write(postDataStr);myStreamWriter.Close();
*/
                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();
}