Кто-нибудь что-нибудь по сабжу знает?
Короче есть сервис в интернете, мне нужно к нему программно приконнектицца и, собственно, управлять им.
Соединение устанавливаю, сервак сертификат жрёт. Логинюсь нормально.. Но почему-то после пересылки следующей комманды мне сервис возвращает 'bad_session'. Позырил исходники етого сайта, там стоит следующая проверка (ASP):
If Not Session("Enable") then
blabla
response.wtite("bad_session")
Такая же проверка есть и в процессе залогинивания, но всё проходит шоколадно.
Вот так я устанавливаю защищённое соединение:
Private Function SetSecureConnection() As Boolean
Try
Dim req As HttpWebRequest
Dim result As WebResponse
RaiseEvent OnStatusChanged("Found a certificate. Expiration date " & cert.GetExpirationDateString)
ServicePointManager.CertificatePolicy = New MyCertificateValidation
req = CType(WebRequest.Create(m_baselink), HttpWebRequest)
req.ClientCertificates.Add(cert)
Dim proxy As New WebProxy("http://wtd.ime.reuters.com/proxy.pac")
req.Proxy = proxy
RaiseEvent OnStatusChanged("Sending the cerificate to " & m_baselink)
result = req.GetResponse()
Catch ex As WebException
RaiseEvent OnStatusChanged("An error occured while connecting to " & m_baselink & ". Check your internet connection")
MsgBox(ex.Message)
Return False
Catch ex As Exception
RaiseEvent OnStatusChanged("Error in SetSecureConnection function. Contact the developer.")
Return False
End Try
RaiseEvent OnStatusChanged("Secure connection was set successfuly")
Return True
End Function
а вот так посылаю команды:
Private Sub InitWebConnection()
If SetSecureConnection() Then
Try
Dim req As HttpWebRequest = CType(WebRequest.Create(m_enginelink & "?" & "cmd=login"), HttpWebRequest)
Dim rsp As WebResponse
req.Method = "POST"
Dim proxy As New WebProxy("http://wtd.ime.reuters.com/proxy.pac")
req.Proxy = proxy
Dim sw As New StreamWriter(req.GetRequestStream())
sw.WriteLine("<root><login>" & m_username & "</login><pass>" & m_password & "</pass></root>")
RaiseEvent OnStatusChanged("Sending your login details")
sw.Close()
rsp = req.GetResponse()
Dim xr As New XmlTextReader(rsp.GetResponseStream())
Dim xd As New XmlDocument
xd.Load(xr)
If xd.ChildNodes.Count <> 0 Then
Dim status As String = xd.ChildNodes(0).ChildNodes(0).InnerText
Select Case status
Case "NO_AGREEMENT"
RaiseEvent OnStatusChanged("The Agreement on use of the system is not signed. Please login to the site via Internet Explorer for signing it")
Case "SUCCESS"
RaiseEvent OnStatusChanged("You've been successfuly logged in. The system is ready")
Case "FAILED"
RaiseEvent OnStatusChanged("Login or password incorrect")
Case "LOGIN_IN_USE"
RaiseEvent OnStatusChanged("This login name is already in use. Close all active connections")
Case "SERVICES_DOWN"
RaiseEvent OnStatusChanged("Some services are down. Please try connecting later")
End Select
Else
RaiseEvent OnStatusChanged("Server response erroneous or no response recieved")
End If
Catch ex As Exception
RaiseEvent OnStatusChanged("Error in InitWebConnection() sub. Contact the developer.")
MsgBox(ex.Message.ToString)
End Try
End If
End Sub
Пробывал при каждом обращении к сервису вызывать SetSecureConnection.. но тем не менее получаю тот же мессадж.
Если кто-то что-то может подсказать в целом по процессу соединения по SSL и внутренних механизмах, буду признателен..