使用Tls11 C#读取HttpWebResponse

时间:2017-10-23 20:51:25

标签: c# httpwebrequest httpwebresponse

我正在尝试使用C#向网站发出POST请求。 我先试过这段代码:

                byte[] buffer = Encoding.UTF8.GetBytes(postData);
                HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("https://www.foo.com");


                WebReq.Method = "POST";
                WebReq.Accept = "*/*";
                WebReq.Headers.Add("Accept-Encoding","gzip, deflate");
                WebReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
                WebReq.ContentType = "application/x-www-form-urlencoded";
                WebReq.ContentLength = buffer.Length;

                Stream PostData = WebReq.GetRequestStream();
                PostData.Write(buffer, 0, buffer.Length);
                PostData.Close();
                HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
                Stream Answer = WebResp.GetResponseStream();
                StreamReader _Answer = new StreamReader(Answer);
                String reply = _Answer.ReadToEnd();
                //do some tasks on reply 

事实证明,这总是会返回此错误:“基础连接已关闭......”

我发现这是因为该网站只接受TLS。所以我在代码的开头添加了这个:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;

该网站接受了该请求,但现在我无法读取我收到的响应,它被加密为类似的内容:

��;ks�J���+&�$�� zYK)�NN�{������TJ5� � ��`���o�H �؎]��(K0��~�>~|����}NbL?��ϾG^='�/�����~<�k$��|��P�

我需要在响应上执行一些任务,所以我需要在代码中解密它...我很开心!提前谢谢!

0 个答案:

没有答案