标题:请教高手,这个类能改成VB.NET语言吗
只看楼主
guchew
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-5-14
结帖率:28.57%
已结贴  问题点数:10 回复次数:8 
请教高手,这个类能改成VB.NET语言吗
public static class Util   
{        
   /// <summary>        
   /// Sets the cert policy.     
   /// </summary>  
   public static void SetCertificatePolicy()  
   {      
       ServicePointManager.ServerCertificateValidationCallback  += RemoteCertificateValidate;        
   }

  /// <summary>         
  /// Remotes the certificate validate.         
  /// </summary>        
  private static bool RemoteCertificateValidate( object sender, X509Certificate cert,  X509Chain chain, SslPolicyErrors error)  
  {     
      // trust any certificate!!!         
      System.Console.WriteLine("Warning, trust any certificate");      
      return true;
  }   
}
搜索更多相关主题的帖子: public private policy chain 
2016-12-04 19:36
guchew
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-5-14
得分:0 
其实也没必要非要用这个类修改,自己写两个函数解决了。真正让我头痛的问题是这样的:
程序代码:
TempXmlObject = CreateObject("Msxml2.ServerXMLHTTP.6.0")
With TempXmlObject
            .Open("GET", url, False)
            .SetRequestHeader("Connection", "keep-alive")
            .SetRequestHeader("Accept-Encoding", "gzip, deflate")
            .setRequestHeader("Accept-Language", "zh-CN,en-us;q=0.8,en;q=0.6")
            .setRequestHeader("User-Agent",useragent)
            .Send()

运行程序,会在.Send()处报错:“接收到的消息异常,或格式不正确。”而开着抓包软件运行程序则能正常收到数据,访问的是一个HTTPS网站。请高手指点如何解决。


[此贴子已经被作者于2016-12-5 10:13编辑过]

2016-12-05 10:10
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:10 
对于一楼,可以转换成:
程序代码:
Public NotInheritable Class Util
    Private Sub New()
    End Sub
    ''' <summary>        
    ''' Sets the cert policy.     
    ''' </summary>  
    Public Shared Sub SetCertificatePolicy()
        AddHandler ServicePointManager.ServerCertificateValidationCallback, AddressOf RemoteCertificateValidate
    End Sub

    ''' <summary>         
    ''' Remotes the certificate validate.         
    ''' </summary>        
    Private Shared Function RemoteCertificateValidate(sender As Object, cert As X509Certificate, chain As X509Chain, [error] As SslPolicyErrors) As Boolean
        ' trust any certificate!!!          
        System.Console.WriteLine("Warning, trust any certificate")
        Return True
    End Function
End Class


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-12-05 11:45
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
至于二楼的问题,我暂时无法重现,因为不知道你的变量url和useragent的值。
我用你的代码并为上面两个变量赋值,代码完整运行。分析认为,你发送的数据格式不符合规范要求。下面是代码及运行截图:

程序代码:
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim TempXmlObject As Object = CreateObject("Msxml2.ServerXMLHTTP.6.0")
        Dim useragent As String = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 663; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)"
        With TempXmlObject
            .Open("GET", "http://mail.", False)
            .SetRequestHeader("Connection", "keep-alive")
            '.SetRequestHeader("Accept-Encoding", "gzip, deflate")
            .setRequestHeader("Accept-Language", "zh-CN,en-us;q=0.8,en;q=0.6")
            .setRequestHeader("User-Agent", useragent)
            .Send()
            Dim result As String = .responseText
            MsgBox(result)
        End With
    End Sub



===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-12-05 16:19
guchew
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-5-14
得分:0 
回复 3楼 不说也罢
版主C语言功底深厚啊,一下看出这是个回调函数。
2016-12-05 20:24
guchew
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-5-14
得分:0 
回复 4楼 不说也罢
这个问题我可能没交代清楚,一般的网站用这个程序肯定没问题,但我要访问的是一个HTTPS网站,可能有SSL之类的协议,协议方面我不懂。我这个程序还漏了几个文件头,应该要忽略证书异常。我感到奇怪的是请求网站不能成功也就罢了,但我开着HTTP analyzer时又能正常收发数据。今天翻墙到HTTP Analyzer论坛发贴请教,好像是个版主问我用FIDDLER能否截获到数据,我试了不能。不知道能不能得到他们的进一步解答。网址不便公开,如果版主有兴趣我发到你信箱。
2016-12-05 20:43
guchew
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-5-14
得分:0 
发不了短信啊,说是最多500字,我这那有500字啊。
2016-12-05 20:58
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
以下是引用guchew在2016-12-5 20:43:16的发言:

这个问题我可能没交代清楚,一般的网站用这个程序肯定没问题,但我要访问的是一个HTTPS网站,可能有SSL之类的协议,。。。。。


原理是一样的,猜测你要访问的网站,不仅是HTTPS网站,而且需要数字证书(UKEY)之类进行登录验证是吧。访问“https://mail.”就没有障碍。

我注意到你二楼的“接收到的消息异常,或格式不正确。”你尝试把.SetRequestHeader("Accept-Encoding", "gzip, deflate")这行代码注释掉再测试下。

有时间再讨论吧。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-12-06 09:24
guchew
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2016-5-14
得分:0 
今天老外回复我叫我用webrequest试试。我试了用这个类的确可以发出数据,但在Dim res As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)处出现提示:基础连接已经关闭: 发送时发生错误。百度了一下碰到这个问题的人很多,但他们的解决方案对我无效。

   


[此贴子已经被作者于2016-12-6 19:41编辑过]

2016-12-06 16:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471973-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.423143 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved