Skipp 0 Denunciar post Postado Novembro 5, 2007 Ola amigos! Estou tendo um problema que nao consigo resolver de forma alguma. Eu tenho um codigo que acessa uma paginae traz o conteudo dela pra mim...isso funciona normalmente com HTTP mas quando tento usar HTTPS da erro. Segue abaixo o codigo: Dim strURL as string = "https://www16.bb.com.br/site/mpag/" Dim loHttp As HttpWebRequest = WebRequest.Create(strURL) Dim lcPostData As String Dim lbPostBuffer As Byte() Dim loPostData As Stream lcPostData = "idConv=" & HttpUtility.UrlEncode("0000") lcPostData += "&valor=" & HttpUtility.UrlEncode("7850") lcPostData += "&refTran=" & HttpUtility.UrlEncode("00000000000000000") lcPostData += "&nome=" & HttpUtility.UrlEncode("Lucas") lcPostData += "&endereco=" & HttpUtility.UrlEncode("AV teste, 2373- RUA 2, 79 A") lcPostData += "&cidade=" & HttpUtility.UrlEncode("Taubaté") lcPostData += "&estado=" & HttpUtility.UrlEncode("SP") lcPostData += "&cep=" & HttpUtility.UrlEncode("12032000") lcPostData += "&dtVenc=" & HttpUtility.UrlEncode("07122006") lcPostData += "&msgLoja=" & HttpUtility.UrlEncode("Pagamento válido somente até a data de vencimento!<br><br><br><br><br><br><br><br><b>Número do pedido:</b> 000") lcPostData += "&versao=" & HttpUtility.UrlEncode("02") lcPostData += "&moeda=" & HttpUtility.UrlEncode("986") lcPostData += "&convClasse=" & HttpUtility.UrlEncode("001") lcPostData += "&tpPagamento=" & HttpUtility.UrlEncode("2") lcPostData += "&urlRetorno=" & HttpUtility.UrlEncode("http://www.sss.com.br") lbPostBuffer = Encoding.GetEncoding(1252).GetBytes(lcPostData) loHttp.Method = "POST" loHttp.ContentLength = lbPostBuffer.Length loHttp.Timeout = 1000000 loHttp.UserAgent = Request.UserAgent.ToString loPostData = loHttp.GetRequestStream() loPostData.Write(lbPostBuffer, 0, lbPostBuffer.Length) loPostData.Close() Dim loWebResponse As HttpWebResponse = loHttp.GetResponse() Dim Enc As Encoding = Encoding.GetEncoding(1252) Dim loResponseStream As StreamReader = New StreamReader(loWebResponse.GetResponseStream(), Enc) lbCode.Text = loResponseStream.ReadToEnd().ToString loWebResponse.Close() loResponseStream.Close() Erro que ele gera: Server Error in '/diretorio' Application. The remote certificate is invalid according to the validation procedure. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. a Exception Details: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [AuthenticationException: The remote certificate is invalid according to the validation procedure.] System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) +1036898 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) +333 System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +313 System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) +386 System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) +293 System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) +297 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) +364 System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +313 System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) +386 System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) +293 System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) +297 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) +364 System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +313 System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) +386 System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) +293 System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) +297 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) +364 System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +313 System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) +138 System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) +120 System.Net.TlsStream.CallProcessAuthentication(Object state) +47 System.Threading.ExecutionContext.runTryCode(Object userData) +66 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup( ryCode code, CleanupCode backoutCode, Object userData) +0 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) +166 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) +145 System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) +728 System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) +44 System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size) +21 System.Net.ConnectStream.WriteHeaders(Boolean async) +266 [WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.] System.Net.HttpWebRequest.GetRequestStream() +1504461 aaa.grabber.urlGrabber(String strURL) in ---grabber.aspx.vb:64 aaa.grabber.Page_Load(Object sender, EventArgs e) in ---grabber.aspx.vb:31 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061 Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.210 Compartilhar este post Link para o post Compartilhar em outros sites
klaygomes 0 Denunciar post Postado Novembro 5, 2007 Skipp, bom dia tudo bem? Insere no seu código: (...) using System.Net.Security; using System.Security.Cryptography.X509Certificates; (...) // Insira isto no page load dá página (se for webservice colocar antes do request) System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslError) { //TODO: não esqueça de implementar uma rotina de verificação, caso contrário todos os certificados serão aceitos. bool validationResult = true; return validationResult; }; fonte: http://msdn2.microsoft.com/en-us/library/s...oncallback.aspx Compartilhar este post Link para o post Compartilhar em outros sites
Skipp 0 Denunciar post Postado Novembro 5, 2007 Obrigado pela ajuda KlayGomes, mas estou tendo problemas para converter isso para VB.NET! Você pode me ajudar...eu sou novato com VB.NET e to apanhando aqui!! Muito obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
klaygomes 0 Denunciar post Postado Novembro 5, 2007 Olha: http://www.google.com.hk/search?q=ServerCe...art=10&sa=N (...) Imports System.Net.Security Imports System.Security.Cryptography.X509Certificates (...) Private Function ChckRemote(ByVal sender As Object, ByValcertificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean //TODO: não esqueça de implementar uma rotina de verificação, caso contrário todos os certificados serão aceitos. Return True End Function ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ChckRemote) Compartilhar este post Link para o post Compartilhar em outros sites
Skipp 0 Denunciar post Postado Novembro 5, 2007 Olha: http://www.google.com.hk/search?q=ServerCe...art=10&sa=N Cara de coração muito obrigado mesmo!! Tanto pelo site, que é muito bom!! Quanto pelo codigo traduzido!! Vlw mesmo!! Compartilhar este post Link para o post Compartilhar em outros sites