请问有人做过用HttpWebRequest通过"Post"方法,对https地址提交请求的吗?

亚非 2009-04-03 09:49:42
为什么一到Request.GetResponse()就弹出“基础连接已经关闭: 连接被意外关闭。”错误呢。

换了好多种方式,网上的代码也测试了好多,都是这问题。我看网上别人写的代码基本和我一样,难道他们的代码就能运行吗?
我也用了ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);方法,也不行。
...全文
1217 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangfnso 2012-07-22
  • 打赏
  • 举报
回复
都一样,这应该怎么样解决呢?
沉序员 2011-12-12
  • 打赏
  • 举报
回复
我也是
雾雨苍茫 2011-11-02
  • 打赏
  • 举报
回复
我也是啊.....
js114 2011-09-24
  • 打赏
  • 举报
回复
我也遇到类似问题,HTTPS可以获取GET参数值,无法获取POST参数值
doglikeman 2011-09-13
  • 打赏
  • 举报
回复
解决没有?我也是……
liuyilin888 2011-05-06
  • 打赏
  • 举报
回复
我也碰到了问题,也是一样的,没人解决呀。
zhongshu76 2010-12-27
  • 打赏
  • 举报
回复
我也碰到了问题,也是一样的,没人解决呀。
ft1000 2010-06-30
  • 打赏
  • 举报
回复
碰到一样的问题 头都大了!
xjnmyq 2010-06-14
  • 打赏
  • 举报
回复
遇到同样的问题
zhonwei123 2010-05-28
  • 打赏
  • 举报
回复
兄台啊,现在我的问题跟你一样 纠结 你怎么解决的啊? 帮下我啊
亚非 2009-04-03
  • 打赏
  • 举报
回复
不行的,加过的。还是在request.GetResponse()时出错。我觉得应该是基础错误,不应该是提交的内容出错,如果只是的内容出错,应该返回错误的代码,现在是连接断开,应该是服务器认为这是个伪身份。
feiyun0112 2009-04-03
  • 打赏
  • 举报
回复
就是在代码最前面加上这句

http://msdn.microsoft.com/zh-cn/vs2008/system.net.servicepointmanager.securityprotocol(VS.85).aspx
亚非 2009-04-03
  • 打赏
  • 举报
回复
楼上的,麻烦给个详细的说明和使用方法不?

而且你说的ServicePointManager.SecurityProtocol=SecurityProtocol.Ssl3;
在网上查不出来。
feiyun0112 2009-04-03
  • 打赏
  • 举报
回复
指定使用安全超文本传输协议 (HTTPS) 方案的新连接选择安全套接字层 (SSL) 协议

ServicePointManager.SecurityProtocol=SecurityProtocol.Ssl3;


*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/
亚非 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tanglang86 的回复:]
麻烦高手看下菜鸟的帖子,帮忙处理下,已经快1天了:http://topic.csdn.net/u/20090403/13/f94c86d3-d31c-4867-8845-1344655078ce.html
[/Quote]


你的帖子我已经回复了,你可以看下了。不知道是不是那意思。
亚非 2009-04-03
  • 打赏
  • 举报
回复
//这是SSL部分,网上都是这样写的,说是可以自动过SSL
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

//开始获取Cookie
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://hi.baidu.com/");
request.Method = "GET";
request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
request.KeepAlive = true;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream receiveStream = response.GetResponseStream();
cookieContainer = request.CookieContainer;
StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
html = readStream.ReadToEnd();
cookie = response.Headers.Get("Set-Cookie");
readStream.Close();

//提交用户名和密码
url = "https://passport.baidu.com/?login";
server = "http://hi.baidu.com/";
cookieContainer = request.CookieContainer;
cookieContainer.SetCookies(new Uri(server), cookie);
postdata = "tpl=sp&tpl_reg=sp&u=http%3A%2F%2Fhi.baidu.com%2F&username=XXXX&password=XXXXX&Submit=+%B5%C7%C2%BC+";

HttpWebRequest httpWebRequest;
HttpWebResponse webResponse;
Stream getStream;
byte[] byteRequest = Encoding.ASCII.GetBytes(postdata);
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpWebRequest.ReadWriteTimeout = 10 * 1000;

httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.Credentials = CredentialCache.DefaultCredentials;
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.Accept =
"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*";
httpWebRequest.Referer = server;
httpWebRequest.UserAgent =
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
httpWebRequest.Method = "POST";
httpWebRequest.ContentLength = byteRequest.Length;


Stream stream;
stream = httpWebRequest.GetRequestStream();
stream.Write(byteRequest, 0, byteRequest.Length);
stream.Close();

webResponse = (HttpWebResponse)httpWebRequest.GetResponse();//这部分是错误,提示“基础连接已经关闭: 连接被意外关闭"
header = webResponse.Headers.ToString();
getStream = webResponse.GetResponseStream();

StreamReader readStream = new StreamReader(getStream, Encoding.GetEncoding(webResponse.CharacterSet));
html = readStream.ReadToEnd();
getStream.Close();

*************************************************************************************
感觉应该是不是SSL证书没有加载的问题,可是用IE打开就能登录,IE是怎么获取SSL证书的,如果存在此证书,那么应该在什么地方呢。
螳螂86 2009-04-03
  • 打赏
  • 举报
回复
麻烦高手看下菜鸟的帖子,帮忙处理下,已经快1天了:http://topic.csdn.net/u/20090403/13/f94c86d3-d31c-4867-8845-1344655078ce.html
辛鹤 2009-04-03
  • 打赏
  • 举报
回复
ie
cookie
feiyun0112 2009-04-03
  • 打赏
  • 举报
回复
你的代码?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧