今天,有个网友问我:
用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:// 地址一样了
}
分享到:
相关推荐
C# asp.net http HttpWebRequest模拟浏览器请求下载文件到本地
总之,"火车头7.6版采集https插件:网站报错System.Net.HttpWebRequest问题解决方案"涉及到的是火车头在进行HTTPS抓取时遇到的网络请求错误,通过特定的插件(https.dll)和相应的使用说明可以解决这一问题。在使用...
在本教程中,我们将深入探讨如何使用HttpWebRequest在Asp.Net中实现跨域上传。 首先,我们要明白HTTP的同源策略。这是浏览器为了保护用户安全而设置的一种机制,不允许脚本从不同的源获取或发送数据。然而,为了...
VB.NET通过虚方法(`Overridable`)和重写(`Overrides`)实现多态。 4. **抽象**:抽象类和接口允许开发者定义行为规范而不给出具体实现,具体的实现由子类完成。在VB.NET中,可以定义抽象类(使用`MustInherit`...
在"VB.NET网页源码爬取.zip"这个压缩包中,包含的是一套使用VB.NET实现的网页源码爬取示例。这套示例旨在帮助开发者解决在爬取网页源码时可能遇到的问题,并提供了四级爬取的结构,每级都会展示提取结果,以直观地...
在VB.NET中,中高级主题通常包括但不限于面向对象编程(OOP)、异常处理、多线程、高级数据访问、文件和流操作、网络编程、反射、委托和事件、LINQ以及自定义控件和用户界面设计。下面,我们将详细探讨这些关键知识...
9. **多线程**:为了防止更新过程阻塞用户界面,可以使用VB.NET的后台线程或多任务处理,如ThreadPool或Task类,实现异步更新。 10. **版本比较**:自动更新程序需要判断本地版本是否低于服务器上的版本。这涉及到...
这个项目展示了如何使用VB.NET实现一个谷歌翻译接口,充分利用了HTTP请求、数据压缩处理、JSON解析以及对Office文档(如Excel和Word)的操作。下面将详细阐述这些关键知识点。 首先,【标题】中的"HttpWebRequest...
学习如何在VB.NET网络编程中实现SSL/TLS加密以及用户身份验证,如基本认证、Windows集成认证或OAuth等,是确保应用程序安全的关键。 10. **Web服务与API交互** VB.NET可以调用XML Web Services(SOAP)或RESTful ...
在VB.NET中,可以使用`System.Net.HttpWebRequest`类来构造和发送HTTP请求。 2. **API调用**:短信服务提供商会提供一个API文档,其中包含调用接口所需的URL、参数以及认证信息。你需要根据这些信息在代码中构建...
3. **Web请求**:获取网络上的JSON数据通常涉及HTTP请求,VB.NET提供了`System.Net.HttpWebRequest`或`HttpClient`类来实现。例如,你可以向提供天气预报的API发送GET请求,并接收返回的JSON响应。 ```vb.net Using...
总之,通过`HttpWebRequest`和`CookieContainer`,你可以实现C#中的文件上传功能,并保持会话状态,这对于处理需要登录和文件交互的Web应用非常有用。这个过程涉及到了HTTP协议的理解、C#流操作以及.NET Framework中...
通过以上步骤,你可以使用VB.NET中的`HttpWebRequest`实现基本的HTTP通信。然而,实际项目中可能还需要处理更复杂的情况,如重试机制、超时控制、Cookie管理等。对于这些高级主题,需要进一步学习和实践来提升你的...
使用VB.NET的`Graphics`类和`Pen`、`Brush`对象,可以进行图形绘制,实现自定义的用户界面或图形输出。 13. **多线程** VB.NET支持多线程编程,`Thread`类允许开发者同时执行多个任务,提高程序的并发性和响应性...
《网络编程.NET with C#和VB.NET 2004》是一本专注于.NET框架下,使用C#和VB.NET进行网络编程的专业书籍。这本书详细介绍了如何利用这两种语言来开发网络应用,涵盖了API调用、DLLImport特性以及Invoke方法等多个...
《VB.NET网络编程指南》是一本深入探讨如何利用VB.NET进行网络编程的宝贵资源。VB.NET,全称Visual Basic .NET,是微软公司推出的面向对象的编程语言,它继承了Visual Basic的强大功能,并且与.NET Framework紧密...
【VB.Net2010自动填表模拟登录网页】是一个教学资源,主要针对初学者,旨在教授如何使用VB.Net 2010编程语言来实现自动化填写网页表单并进行模拟登录的功能。这个课程通过高清视频教程和配套的源代码,帮助学习者...
【VB.NET】是一种基于.NET Framework的编程语言,由微软公司推出,主要用于开发Windows应用程序。它在Visual Basic的基础上进行了大量的改进,引入了面向对象的编程概念,使得编程更加简洁和高效。VB.NET教师上课用...
VB.NET(Visual Basic .NET)作为.NET框架下的编程语言,提供了丰富的功能来实现这一机制。本资源提供的“程序自动autoupdate vb.net源代码”旨在帮助开发者构建自己的自动更新系统。 自动更新机制的核心是检查新...