`
zu14
  • 浏览: 459739 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现

    博客分类:
  • C#
阅读更多

 

今天,有个网友问我:

用httpwebrequest访问一个SSL类型的地址 https://xxxx 时,报错 “未能为 SSL/TLS 安全通道建立信任关系(Could not establish trust relationship for the SSL/TLS secure channel)”

查了下MSDN,找到了解决方法,SSL网站,连接时需要提供证书,对于非必须提供客户端证书的情况,只要返回一个安全确认 即可。但是此方法的实现,在.NET 1.1 和 .NET 2.0 下是不同的,下面写出2个framework版本下的实现方法:

使用的命名空间:

using 
System
.
Net
;

using 
System
.
Net
.
Security
;

using 
System
.
Security
.
Authentication
;

using 
System
.
Security
.
Cryptography
.
X509Certificates
;

.Net 2.0

public 
bool 
CheckValidationResult
(
object 
sender
, 
X509Certificate certificate
, 
X509Chain chain
, 
SslPolicyErrors errors
)
{   
    
//直接确认,否则打不开   
    
return 
true
;
}
    

private void 
button1_Click
(
object 
sender
, 
EventArgs 
e
)
{

    ServicePointManager
.
ServerCertificateValidationCallback 
= 
new 
System
.
Net
.
Security
.
RemoteCertificateValidationCallback
(
CheckValidationResult
);

    HttpWebRequest 
req 
= (
HttpWebRequest
)
WebRequest
.
CreateDefault
(
new 
Uri
(
"https://zu14.cn/"
));

    req
.
Method 
= 
"GET"
;

    HttpWebResponse 
res 
= (
HttpWebResponse
)
req
.
GetResponse
();

    //...正常使用了,和访问普通的 http:// 地址一样了

}

 

.Net 1.1

internal 
class 
AcceptAllCertificatePolicy : ICertificatePolicy

{
    
public 
AcceptAllCertificatePolicy
()
    {
    }

    
public 
bool 
CheckValidationResult
(
ServicePoint sPoint
, 
System
.
Security
.
Cryptography
.
X509Certificates
.
X509Certificate cert
, 
WebRequest wRequest
, 
int 
certProb
)
    {
        
//直接确认
        
return 
true
;
    }
} 
    

private void 
button1_Click
(
object 
sender
, 
EventArgs 
e
)
{

    ServicePointManager
.
CertificatePolicy 
= 
new 
AcceptAllCertificatePolicy()
;

    HttpWebRequest 
req 
= (
HttpWebRequest
)
WebRequest
.
CreateDefault
(
new 
Uri
(
"https://zu14.cn/"
));

    req
.
Method 
= 
"GET"
;

    HttpWebResponse 
res 
= (
HttpWebResponse
)
req
.
GetResponse
();

    //...正常使用了,和访问普通的 http:// 地址一样了

}

 

0
0
分享到:
评论

相关推荐

    C# asp.net http HttpWebRequest模拟浏览器请求下载文件到本地.txt

    C# asp.net http HttpWebRequest模拟浏览器请求下载文件到本地

    火车头7.6版采集https插件:网站报错System.Net.HttpWebRequest问题解决方案

    总之,"火车头7.6版采集https插件:网站报错System.Net.HttpWebRequest问题解决方案"涉及到的是火车头在进行HTTPS抓取时遇到的网络请求错误,通过特定的插件(https.dll)和相应的使用说明可以解决这一问题。在使用...

    Asp.Net使用HttpWebRequest跨域上传

    在本教程中,我们将深入探讨如何使用HttpWebRequest在Asp.Net中实现跨域上传。 首先,我们要明白HTTP的同源策略。这是浏览器为了保护用户安全而设置的一种机制,不允许脚本从不同的源获取或发送数据。然而,为了...

    vb.net调用模块和短信接口实例

    VB.NET通过虚方法(`Overridable`)和重写(`Overrides`)实现多态。 4. **抽象**:抽象类和接口允许开发者定义行为规范而不给出具体实现,具体的实现由子类完成。在VB.NET中,可以定义抽象类(使用`MustInherit`...

    VB.NET网页源码爬取.zip

    在"VB.NET网页源码爬取.zip"这个压缩包中,包含的是一套使用VB.NET实现的网页源码爬取示例。这套示例旨在帮助开发者解决在爬取网页源码时可能遇到的问题,并提供了四级爬取的结构,每级都会展示提取结果,以直观地...

    VB.NET教程中高级篇

    在VB.NET中,中高级主题通常包括但不限于面向对象编程(OOP)、异常处理、多线程、高级数据访问、文件和流操作、网络编程、反射、委托和事件、LINQ以及自定义控件和用户界面设计。下面,我们将详细探讨这些关键知识...

    自动更新程序用vb.net写的软件更新程序

    9. **多线程**:为了防止更新过程阻塞用户界面,可以使用VB.NET的后台线程或多任务处理,如ThreadPool或Task类,实现异步更新。 10. **版本比较**:自动更新程序需要判断本地版本是否低于服务器上的版本。这涉及到...

    VB.NET实现的谷歌翻译接口,用HttpWebRequest,自动解压gzip数据流,json解析,运行JScript,EXECL,Word关联操作

    这个项目展示了如何使用VB.NET实现一个谷歌翻译接口,充分利用了HTTP请求、数据压缩处理、JSON解析以及对Office文档(如Excel和Word)的操作。下面将详细阐述这些关键知识点。 首先,【标题】中的"HttpWebRequest...

    vb.net网络编程指南

    学习如何在VB.NET网络编程中实现SSL/TLS加密以及用户身份验证,如基本认证、Windows集成认证或OAuth等,是确保应用程序安全的关键。 10. **Web服务与API交互** VB.NET可以调用XML Web Services(SOAP)或RESTful ...

    VB.NET 实现短信接口源码

    在VB.NET中,可以使用`System.Net.HttpWebRequest`类来构造和发送HTTP请求。 2. **API调用**:短信服务提供商会提供一个API文档,其中包含调用接口所需的URL、参数以及认证信息。你需要根据这些信息在代码中构建...

    Json测试 vb.net版

    3. **Web请求**:获取网络上的JSON数据通常涉及HTTP请求,VB.NET提供了`System.Net.HttpWebRequest`或`HttpClient`类来实现。例如,你可以向提供天气预报的API发送GET请求,并接收返回的JSON响应。 ```vb.net Using...

    C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法

    总之,通过`HttpWebRequest`和`CookieContainer`,你可以实现C#中的文件上传功能,并保持会话状态,这对于处理需要登录和文件交互的Web应用非常有用。这个过程涉及到了HTTP协议的理解、C#流操作以及.NET Framework中...

    VB.NET--httpwebrequest.zip_HttpWebrequest

    通过以上步骤,你可以使用VB.NET中的`HttpWebRequest`实现基本的HTTP通信。然而,实际项目中可能还需要处理更复杂的情况,如重试机制、超时控制、Cookie管理等。对于这些高级主题,需要进一步学习和实践来提升你的...

    VB.net经典教案经典讲解

    使用VB.NET的`Graphics`类和`Pen`、`Brush`对象,可以进行图形绘制,实现自定义的用户界面或图形输出。 13. **多线程** VB.NET支持多线程编程,`Thread`类允许开发者同时执行多个任务,提高程序的并发性和响应性...

    Network programming.NET with C# and VB.NET 2004.rar

    《网络编程.NET with C#和VB.NET 2004》是一本专注于.NET框架下,使用C#和VB.NET进行网络编程的专业书籍。这本书详细介绍了如何利用这两种语言来开发网络应用,涵盖了API调用、DLLImport特性以及Invoke方法等多个...

    VB.NET网络编程指南.rar

    《VB.NET网络编程指南》是一本深入探讨如何利用VB.NET进行网络编程的宝贵资源。VB.NET,全称Visual Basic .NET,是微软公司推出的面向对象的编程语言,它继承了Visual Basic的强大功能,并且与.NET Framework紧密...

    VB.Net2010自动填表模拟登录网页(高清视频+源码).zip

    【VB.Net2010自动填表模拟登录网页】是一个教学资源,主要针对初学者,旨在教授如何使用VB.Net 2010编程语言来实现自动化填写网页表单并进行模拟登录的功能。这个课程通过高清视频教程和配套的源代码,帮助学习者...

    VB.NET教师上课用教案

    【VB.NET】是一种基于.NET Framework的编程语言,由微软公司推出,主要用于开发Windows应用程序。它在Visual Basic的基础上进行了大量的改进,引入了面向对象的编程概念,使得编程更加简洁和高效。VB.NET教师上课用...

    程序自动 autoupdate vb.net 源代码

    VB.NET(Visual Basic .NET)作为.NET框架下的编程语言,提供了丰富的功能来实现这一机制。本资源提供的“程序自动autoupdate vb.net源代码”旨在帮助开发者构建自己的自动更新系统。 自动更新机制的核心是检查新...

Global site tag (gtag.js) - Google Analytics