首页 > 代码库 > httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭
httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭
C# 用httpWebRequest 执行post请求出现“请求错误,基础连接已经关闭: 连接被意外关闭”,解决方法:
System.Net.HttpWebRequest request;
request.ProtocolVersion = HttpVersion.Version10;
---------------------------------------------------------------
GET方法:
public string DoWebRequest(string url) { HttpWebResponse webResponse = null; HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.Method = "POST"; string responseStr = null; webRequest.Timeout = 50000; webRequest.ContentType = "text/html; charset=gb2312"; try { //尝试获得要请求的URL的返回消息 webResponse = (HttpWebResponse)webRequest.GetResponse(); } catch (WebException e) { //发生网络错误时,获取错误响应信息 responseStr = "发生网络错误!请稍后再试"; } catch (Exception e) { //发生异常时把错误信息当作错误信息返回 responseStr = "发生错误:" + e.Message; } finally { if (webResponse != null) { //获得网络响应流 using (StreamReader responseReader = new StreamReader(webResponse.GetResponseStream(), Encoding.GetEncoding("GB2312"))) { responseStr = responseReader.ReadToEnd();//获得返回流中的内容 } webResponse.Close();//关闭web响应流 } } return responseStr; }
注意:url中的中文,要先用HttpUtility.UrlEncode("内容",编码) 用服务器接收的编码,编码一下。
POST方法:
private string DoWebRequestByPost(string url, string param) { HttpWebResponse webResponse = null; HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); //使用post方式提交 webRequest.Method = "POST"; string responseStr = null; webRequest.Timeout = 50000; //要post的字节数组 byte[] postBytes = encoding.GetBytes(param); webRequest.ContentType = "application/x-www-form-urlencoded;"; webRequest.ContentLength = postBytes.Length; using (Stream reqStream = webRequest.GetRequestStream()) { reqStream.Write(postBytes, 0, postBytes.Length); } try { //尝试获得要请求的URL的返回消息 webResponse = (HttpWebResponse)webRequest.GetResponse(); } catch (Exception) { //出错后直接抛出 throw; } finally { if (webResponse != null) { //获得网络响应流 using (StreamReader responseReader = new StreamReader(webResponse.GetResponseStream(), encoding)) { responseStr = responseReader.ReadToEnd();//获得返回流中的内容 } webResponse.Close();//关闭web响应流 } } return responseStr; }
encoding为服务器接收的编码,例如:Encoding.GetEncoding("GBK")等
param post请求的参数 param1=123¶m2=中国¶m3=abc 这样的格式,中文部分不用使用编码,方法内转成byte[]时 会进行编码。
httpWebRequest请求错误,基础连接已经关闭: 连接被意外关闭
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。