我原來在http下能正常運行的程式現在在https不能運行了,誰有現成的代碼參考一下,
uj5u.com熱心網友回復:
就是向網站發一個代密碼的請求收到一個回復uj5u.com熱心網友回復:
Private Function getPageBytes(ByVal url As [String], ByVal paramList As NameValueCollection, ByVal wideCharEncoding As System.Text.Encoding, ByVal method As String, ByVal resetCookie As Boolean) As Byte()
Dim res As HttpWebResponse = Nothing
Dim result As New System.Collections.ArrayList(5000)
Try
Dim req As HttpWebRequest = Nothing
'如果是發送HTTPS請求
If url.StartsWith("https", StringComparison.OrdinalIgnoreCase) Then
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf CheckValidationResult)
ServicePointManager.SecurityProtocol = CType(&HC0 Or &H300 Or &HC00, SecurityProtocolType)
req = TryCast(WebRequest.Create(url), HttpWebRequest)
req.ProtocolVersion = HttpVersion.Version10
Else
req = TryCast(WebRequest.Create(url), HttpWebRequest)
End If
req.AllowAutoRedirect = False
req.Method = method
req.Timeout = TIMEOUT
'上行方式時,設定引數
If method.ToUpper() <> "GET" Then
Dim UrlEncoded As New StringBuilder()
Dim reserved As [Char]() = {"?"c, "="c, "&"c}
Dim SomeBytes As Byte() = Nothing
If paramList IsNot Nothing Then
Dim paramBuilder As New System.Text.StringBuilder()
Dim paramstr As [String] = Nothing
For li As Integer = 0 To paramList.Keys.Count - 1
If li > 0 Then
paramBuilder.Append("&")
End If
If paramList.Keys(li) <> "" Then
paramBuilder.Append(paramList.Keys(li))
paramBuilder.Append("=")
End If
paramBuilder.Append(paramList(paramList.Keys(li)))
Next
paramstr = paramBuilder.ToString()
SomeBytes = Encoding.UTF8.GetBytes(paramstr)
req.ContentLength = SomeBytes.Length
Dim newStream As Stream = req.GetRequestStream()
newStream.Write(SomeBytes, 0, SomeBytes.Length)
newStream.Close()
Else
req.ContentLength = 0
End If
End If
'請求回應
res = DirectCast(req.GetResponse(), HttpWebResponse)
m_Status = res.StatusCode
If resetCookie Then
Me.m_cookieheader = req.CookieContainer.GetCookieHeader(New Uri(url))
End If
Dim ReceiveStream As Stream = res.GetResponseStream()
Dim sr As System.IO.BinaryReader = Nothing
If res.ContentEncoding = "gzip" Then
Dim stream As New GZipStream(ReceiveStream, CompressionMode.Decompress)
sr = New BinaryReader(stream)
Else
sr = New BinaryReader(ReceiveStream)
End If
'讀取資料
Dim read As Byte() = New Byte(255) {}
Dim count As Integer = sr.Read(read, 0, 256)
While count > 0
result.AddRange(GetSubBytes(read, 0, count))
count = sr.Read(read, 0, 256)
End While
Catch ex As Exception
Dim tmp As String = ex.Message
result.Clear()
Finally
If res IsNot Nothing Then
res.Close()
End If
End Try
Return DirectCast(result.ToArray(GetType(Byte)), Byte())
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/266870.html
標籤:VB.NET
上一篇:WCF,服務端方法運行時間長
下一篇:.NET CORE原始碼看不懂
