HttpWebResponse

There are 2 entries for the tag HttpWebResponse

C# HttpWebResponse下载限速

MitchellChu 2016-03-10 .NET技术

在使用HttpWebResponse请求网络内容的时候,一般如下面这种方法: // 非生产环境代码,请在实际使用时进行必要调整 // —— Mitchell Chu // Blog:blog.useasp.net HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using(var response = (HttpWebResponse)request.GetResponse()) using(var stream = response.GetResponseStream()) { byte[] buffer = new byte[4096]; int read = 0; while((read = stream.Read(buffer, 0, buffer.Length)) >0){ // buffer... } }  使用这种方式,一旦我们开始下载数据,即是全速下载——即理论上是客户端和服务端的最小速度为当前下载速度。如果以这个速度持续下载,要不服务端被拖垮,要不就是客户端被服务端封禁。当然,一般情况下,后者居多。在持续的针对某站资源下载的时候,限速是非常必要的。 在HttpWebResponse里面限制下载速度比较简单,只需要控制读取的速度,即可达到限速的目的: // 非生产环境代码,请在实际使用时进行必要调整 // —— Mitchell Chu // Blog:blog.useasp.net HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using(var response = (HttpWebResponse)request.GetResponse()) using(var stream = response.GetResponseStream()) { byte[] buffer = new byte[4096]; int read = 0; long total_read = 0; DateTime begin = DateTime.Now; TimeSpan ts...

HttpWebRequest请求中使用安全证书的方法

MitchellChu 2013-08-27 .NET技术

在 .NET 中,我们会使用HttpWebRequest或HttpWebResponse来发送一个客户端数字证书,具体的方法: 方法一:使用X509Certificate证书类读取数字证书文件 (*.cer),之后将证书附加到请求(SSL/TLS)当中去: public void GetResponseString(string uri) { try { X509Certificate Cert = X509Certificate.CreateFromCertFile("C:\\证书.cer"); //证书存放的绝对路径 ServicePointManager.CertificatePolicy = new CertPolicy(); //处理来自证书服务器的错误信息 HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(uri);//要访问的像https://要访问的地址/mitchellchu/test.aspx,要用SSL访问的地址 Request.ClientCertificates.Add(Cert); Request.UserAgent = "Mitchell Chu robot test"; // 使用的客户端,如果服务端没有要求可以随便填写 Request.Method = "GET"; // 请求的方式:POST/GET using(HttpWebResponse Response = (HttpWebResponse)Request.GetResponse()) //获取Response { using(StreamReader sr = new StreamReader(Response.GetResponseStream(), Encoding.Default)) { int count; char [] ReadBuf = new char[1024]; do { count = sr.Read(ReadBuf, 0, 1024); if (0 != count) { Console.WriteLine(new string(ReadBuf)); } }while(count > 0); } } } catch(Exception e) { Console.WriteLine(e.Message); } } class CertPolicy: ICertificatePolicy { public bool CheckValidationResult(ServicePoint srvPoint , X509Certificate certificate, WebRequest request, int certificateProblem) { // 你可以在这里加上证书检验的方法,错误值可以在WinError.h中获得 // 这里只是简单的返回true,任何证书都可以正常的使用。 return true; } }  优点:简单方便 缺点:需要证书文件,如果没有,需要先导出证书文件方可使用。   方法二: 使用 CryptoAPI 调用,之后获取证书集合,找到需要使用的证书,以X509Certificate对象形式返回,并附加在请求(HttpWebRequest 或HttpWebResponse)中发送证书。 /* 该案例来源于微软官方网站 @MitchellChu */ using System; using System.Net; using System.IO; using System.Text; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Runtime.InteropServices; namespace SelectClientCert { class MyCerts{ private static int CERT_STORE_PROV_SYSTEM = 10; private static int CERT_SYSTEM_STORE_CURRENT_USER = (1 << 16); ///private static int CERT_SYSTEM_STORE_LOCAL_MACHINE = (2...

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。