miguel5655 Posted October 4, 2013 at 08:53 AM Report #527585 Posted October 4, 2013 at 08:53 AM (edited) Boas pessoal. Estou a fazer uma aplicação que é utilizada por clientes, mas muitos deles devem utilizar proxie para se ligarem á internet e a aplicação deveria conseguir enviar emails. As minhas dúvidas são as seguintes: Qual as diferenças entre utilizar Ping e WebRequest? Existem diferenças em testar a ligação com estas formas? : PING: My.Computer.Network.Ping("www.google.com", 500) ** Dim tcp As New TcpClient() tcp.Connect("192.**.**.**", Convert.ToInt16(125) Dim request As WebRequest = WebRequest.Create(_url) request.Credentials = CredentialCache.DefaultCredentials Outra questão que estou a pesquisar, é no WebRequest ao utilizar CredentialCache.DefaultCredentials estou a ir buscar as definições proxy default do IE? Desde já obrigado Edited October 4, 2013 at 08:57 AM by miguel5655
ribeiro55 Posted October 4, 2013 at 09:09 AM Report #527589 Posted October 4, 2013 at 09:09 AM (edited) Uma diferença grandona, aliás. Um ping é enviado via protocolo ICM e um webrequest via HTT. Só este facto já não garante que a resposta de um valide o outro. O teste à ligação deveria existir com a operação em si, ou no mínimo com uma stub no mesmo protocolo. Não há relação das credenciais com o proxy. Pelo menos nada explícito. Deverás indicar directamente a informação do proxy: Dim request As WebRequest = WebRequest.Create(_url) request.Credentials = CredentialCache.DefaultCredentials request.Proxy = New WebProxy(New Uri(_urlproxy), False, Nothing, New NetworkCredential("userproxy", "passproxy")) Edited October 4, 2013 at 09:09 AM by ribeiro55 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
miguel5655 Posted October 4, 2013 at 09:54 AM Author Report #527595 Posted October 4, 2013 at 09:54 AM Obrigado pela explicação.Grande ajuda. Só mais uma coisa se eu quiser utilizar as definições proxy definidas no IE está correto isto? Dim request As WebRequest = WebRequest.Create(_url) request.Credentials = CredentialCache.DefaultCredentials request.Proxy = WebRequest.GetSystemWebProxy() Já agora se eu quiser verificar se o computador está ligado á internet via proxy ou não, como é que posso fazer??
miguel5655 Posted October 4, 2013 at 11:10 AM Author Report #527618 Posted October 4, 2013 at 11:10 AM Bem estive a fazer uns testes e deixo aqui como fiz: Para saber se a ligação é feita por proxy utilizo uma API do windows que me retorna uma flag com o valor. Não sei se é a maneira mais correta ou não, pois retorna-me varias flags, mas consta lá a do proxy portanto deduzo que ao aparecer a flag proxy a que seja usada é a proxy. [DllImport("wininet.dll", CharSet = CharSet.Auto)] private extern static bool InternetGetConnectedState(ref InternetConnectionState_e lpdwFlags, int dwReserved); [Flags] enum InternetConnectionState_e : int { INTERNET_CONNECTION_MODEM = 0x01, INTERNET_CONNECTION_LAN = 0x02, INTERNET_CONNECTION_PROXY = 0x04, INTERNET_RAS_INSTALLED = 0x10, INTERNET_CONNECTION_OFFLINE = 0x20, INTERNET_CONNECTION_CONFIGURED = 0x40 } Fiz um teste ao meu código acima e vi que está correto. Se estiver uma proxy no IE configurada ele vai buscar os valores. Obrigado
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now