Jump to content
estica

TextBox Ler TXT dropbox

Recommended Posts

He B TeMy

Public Shared Function DoRequests(ByVal url As String) As String
 Dim sr As StreamReader = Nothing
 Try
	 Dim request As WebRequest = WebRequest.Create(url)
	 Dim response As WebResponse = request.GetResponse()
	 sr = New StreamReader(response.GetResponseStream())
	 Return sr.ReadToEnd()
 Catch
	 Return Nothing
 Finally
	 If sr IsNot Nothing Then sr.Dispose()
 End Try
End Function

Tenho este código aqui, deve funcionar ainda, têm atenção que isto só irá funcionar se tiveres pasta 'Public' na dropbox e o link for directo, ou seja, quando abres o link no website ele te apresenta apenas o texto.

Estou a dizer isto porque contas da dropbox acima de 2013 não o têm, e é impossível voltarem a ter a não ser que sejam subscritas.

Edit: O catch em cima tá um bocado manhoso porque eu usava essa função para uma situação específica e simplesmente decidi 'engolir' qualquer erro que fosse atirado aí, no entanto, tu deves tentar lidar com os erros possíveis sem fazer o que eu fiz.

Edited by He B Te My

Share this post


Link to post
Share on other sites
estica

Public Shared Function DoRequests(ByVal url As String) As String
Dim sr As StreamReader = Nothing
Try
Dim request As WebRequest = WebRequest.Create(url)
Dim response As WebResponse = request.GetResponse()
sr = New StreamReader(response.GetResponseStream())
Return sr.ReadToEnd()
Catch
Return Nothing
Finally
If sr IsNot Nothing Then sr.Dispose()
End Try
End Function

Tenho este código aqui, deve funcionar ainda, têm atenção que isto só irá funcionar se tiveres pasta 'Public' na dropbox e o link for directo, ou seja, quando abres o link no website ele te apresenta apenas o texto.

Estou a dizer isto porque contas da dropbox acima de 2013 não o têm, e é impossível voltarem a ter a não ser que sejam subscritas.

Edit: O catch em cima tá um bocado manhoso porque eu usava essa função para uma situação específica e simplesmente decidi 'engolir' qualquer erro que fosse atirado aí, no entanto, tu deves tentar lidar com os erros possíveis sem fazer o que eu fiz.

Gostei da ideia e você deve saber como eu contornar um erro que eu tenho em outra leitura.

Uso este código para ver o txt e ver se existe update do meu programa.

Estou a usar ele na Form_load mas se não tiver a net ligada também me vai apresentar um erro que eu queria evitar.

Dim web As New WebClient

Dim LatestVersion As String = web.DownloadString(URL TXT)

Dim CurrentApp As String = My.Application.Info.Version.ToString

If CurrentApp < LatestVersion Then

If MessageBox.Show("A new update is available!" & vbNewLine & "Would you like to update?",MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Em relação ao seu código já introduzi ele no programa e parece estar a funcionar. Agora vou ver como atribuir a leitura na textbox

Share this post


Link to post
Share on other sites
He B TeMy

Não tens maneira de evitar nesse caso, eu apenas falei para não simplesmente 'apanhares' as excepções todas sem fazer nada, no caso de não teres internet ou outra razão qualquer não tens como evitar a excepção, simplesmente deves fazer:

Catch

'O nome da exceção, por exemplo 'SecurityException'

em vez de apanhares tudo.

Quanto á versão, não é ideal fazeres como estás a fazer, deves usar a classe https://msdn.microsoft.com/en-us/library/system.version%28v=vs.110%29.aspx ou comparar apenas integers, NÃO strings.

Share this post


Link to post
Share on other sites
estica

Não tens maneira de evitar nesse caso, eu apenas falei para não simplesmente 'apanhares' as excepções todas sem fazer nada, no caso de não teres internet ou outra razão qualquer não tens como evitar a excepção, simplesmente deves fazer:

Catch

'O nome da exceção, por exemplo 'SecurityException'

em vez de apanhares tudo.

Quanto á versão, não é ideal fazeres como estás a fazer, deves usar a classe https://msdn.microsoft.com/en-us/library/system.version%28v=vs.110%29.aspx ou comparar apenas integers, NÃO strings.

Obrigado pelas dicas e pela ajuda. Vou ver o que consigo fazer ;)

Share this post


Link to post
Share on other sites
Muryllo

Completando oque o amigo He B Te My disse, acredito que exista uma API do windows para verificar a conexão com a internet, você pode baixar um utilitário para o VS (No caso VS2013 o meu) que se chama PINVOKE. Ele te gera as apis que você pesquisar por exemplo OpenProcess, OpenThread ... etc

If My.Computer.Network.IsAvailable = True Then
'Sim, existe conexão
Else
'Não existe conexão
End If

Edited by Muryllo

Share this post


Link to post
Share on other sites
He B TeMy

Completando oque o amigo He B Te My disse, acredito que exista uma API do windows para verificar a conexão com a internet, você pode baixar um utilitário para o VS (No caso VS2013 o meu) que se chama PINVOKE. Ele te gera as apis que você pesquisar por exemplo OpenProcess, OpenThread ... etc

If My.Computer.Network.IsAvailable = True Then
'Sim, existe conexão
Else
'Não existe conexão
End If

O problema é que isso não te garante que tenhas acesso á internet, apenas verifica se estás ligado a uma rede, o que normalmente significa que terás acesso á internet, mas não sempre, por isso terás que usar try catch na mesma.

Share this post


Link to post
Share on other sites
Muryllo

O problema é que nem o Try Catch segura. Como por exemplo exceções do tipo Stack Overflow, Win32 ele deixa passar precisa ser bem bolado oque ele está fazendo e eu já vi uma API do windows que retorna valores em UInt64 para saber por exemplo se a rede é limitada, etc.

Edited by Muryllo

Share this post


Link to post
Share on other sites
He B TeMy

O problema é que nem o Try Catch segura. Como por exemplo exceções do tipo Stack Overflow, Win32 ele deixa passar precisa ser bem bolado oque ele está fazendo e eu já vi uma API do windows que retorna valores em UInt64 para saber por exemplo se a rede é limitada, etc.

Try catch não faz nada a StackOverflowException, mas é só essa que não consegues apanhar nos cenários normais, todas as outras consegues 'engolir', e dá para prevenires stackoverflow porque é fácil de detectar e será problema do teu código apenas.

Quanto a verificar se tens acesso á internet, é práticamente impossível visto que qualquer pedido pode falhar por motivos de rede, de timeouts e afins, nunca terás 100% certeza que o pedido irá suceder, e se não usares try catch e levares um uma excepção, o programa provavelmente será terminado ou o utilizador irá terminálo quando o diálogo do JIT for mostrado.

Share this post


Link to post
Share on other sites
estica

Completando oque o amigo He B Te My disse, acredito que exista uma API do windows para verificar a conexão com a internet, você pode baixar um utilitário para o VS (No caso VS2013 o meu) que se chama PINVOKE. Ele te gera as apis que você pesquisar por exemplo OpenProcess, OpenThread ... etc

If My.Computer.Network.IsAvailable = True Then
'Sim, existe conexão
Else
'Não existe conexão
End If

Não funcionou na mesma... Se não tiver ligado á net continua a dar me erro

Share this post


Link to post
Share on other sites
Muryllo

estica,

Vê só, uma coisa é estar ligado a net como disseste e a outra é receber o sinal do wi fi por exemplo ou ter acesso a internet mas com uma conexão lenta ... De qualquer forma ele vai te dizer isso. Se estiver recebendo sinal ele vai retornar TRUE porém pode não haver conexão então tem que ser bem bolado oque estás querendo. Tenta fazer algo como um ping para verificar se envia pelo menos packets, testa o tempo de retorno ... faz as coisas em condições e assim vai ganhar muito. Depende muito de computador pra computador.

A propósito, estou a criar um sistema desses aí de auto update para o meu programa. Quando eu terminar a biblioteca referente a essas funções eu te passo algo.

De qualquer forma olha este link aqui, como eu disse existe uma API para verificar isso ...

http://techblog.desenvolvedores.net/2011/03/22/checar-se-a-conexao-com-a-internet-esta-ativa/

Outro exemplo :

http://comunidade.itlab.com.br/eve/forums/a/tpc/f/273606921/m/4267061033

Outro exemplo melhor ainda porém mais hardcore retornando o status da conexão de uma forma muito mais precisa :

http://vbnet.mvps.org/index.html?code/network/internetgetconnectedstate.htm

Abraços.

Edited by Muryllo

Share this post


Link to post
Share on other sites
He B TeMy

estica,

Vê só, uma coisa é estar ligado a net como disseste e a outra é receber o sinal do wi fi por exemplo ou ter acesso a internet mas com uma conexão lenta ... De qualquer forma ele vai te dizer isso. Se estiver recebendo sinal ele vai retornar TRUE porém pode não haver conexão então tem que ser bem bolado oque estás querendo. Tenta fazer algo como um ping para verificar se envia pelo menos packets, testa o tempo de retorno ... faz as coisas em condições e assim vai ganhar muito. Depende muito de computador pra computador.

A propósito, estou a criar um sistema desses aí de auto update para o meu programa. Quando eu terminar a biblioteca referente a essas funções eu te passo algo.

De qualquer forma olha este link aqui, como eu disse existe uma API para verificar isso ...

http://techblog.desenvolvedores.net/2011/03/22/checar-se-a-conexao-com-a-internet-esta-ativa/

Outro exemplo :

http://comunidade.itlab.com.br/eve/forums/a/tpc/f/273606921/m/4267061033

Outro exemplo melhor ainda porém mais hardcore retornando o status da conexão de uma forma muito mais precisa :

http://vbnet.mvps.org/index.html?code/network/internetgetconnectedstate.htm

Abraços.

E o que acontece se os servidores da dropbox estiverem em baixo?

Não tens outra maneira OP, envolve o teu código num try-catch e lida com os erros que possas receber apartir daí.

Share this post


Link to post
Share on other sites
Muryllo

Olá He B Ty Me,

Olha só, ele pode mandar uma informação ao servidor e se através da própria WebClient ele receber uma resposta com o "GetResponse" ele pode saber se está funcionando o servidor. Mas creio que ele só quer saber mesmo a questão da internet. Postei 3 links ali, pelo menos 1 tem que servir. Alguns são em VB6 mas dá pra converter.

De qualquer forma ... Try Catch tem que ser aplicado.

Abraços.

Edited by Muryllo

Share this post


Link to post
Share on other sites
He B TeMy

Olá He B Ty Me,

Olha só, ele pode mandar uma informação ao servidor e se através da própria WebClient ele receber uma resposta com o "GetResponse" ele pode saber se está funcionando o servidor. Mas creio que ele só quer saber mesmo a questão da internet. Postei 3 links ali, pelo menos 1 tem que servir. Alguns são em VB6 mas dá pra converter.

De qualquer forma ... Try Catch tem que ser aplicado.

Abraços.

Era isso que eu estava a querer dizer, o OP deu a entender que queria uma API (ou qualquer outra forma) de detectar que ligação á "internet" está disponível (sem usar trycatch), ora, isto é impossível de saber e de prevenir a 100%, porque a rede pode falhar no momento, o servidor que estás a connectar pode estar em baixo apesar de tu teres acesso á internet, ou simplesmente podes ter um time out... eu estava a tentar explicar que ele não têm hipótese de fazer o que está a fazer sem ter de usar try-catch, claro que pode tentar detectar se a rede pelo menos existe, evitando a conexão por completo, mas apartir daí está fora do controlo do programador, o programador apenas têm de evitar que o código devolva uma excepção onde não esteja á espera, logo, terminando a sua aplicação.

Share this post


Link to post
Share on other sites
Muryllo

Era isso que eu estava a querer dizer, o OP deu a entender que queria uma API (ou qualquer outra forma) de detectar que ligação á "internet" está disponível (sem usar trycatch), ora, isto é impossível de saber e de prevenir a 100%, porque a rede pode falhar no momento, o servidor que estás a connectar pode estar em baixo apesar de tu teres acesso á internet, ou simplesmente podes ter um time out... eu estava a tentar explicar que ele não têm hipótese de fazer o que está a fazer sem ter de usar try-catch, claro que pode tentar detectar se a rede pelo menos existe, evitando a conexão por completo, mas apartir daí está fora do controlo do programador, o programador apenas têm de evitar que o código devolva uma excepção onde não esteja á espera, logo, terminando a sua aplicação.

Engraçado outra coisa também é que nem a conexão com a internet ele verifica, sabe porque ? Eu por exemplo uso a rede hamachi que é uma virtual pra fazer conexões com portas virtuais e mesmo desconectando a minha rede do modem e deixando só o hamachi sem conexão a internet ele diz que existe conexão. Tá aí um exemplo de falha.

Share this post


Link to post
Share on other sites
estica

Vocês são uns cromos nesta cena de programação e agradeço a cada ajuda. As vezes a forma mais simples de se fazer as coisas é nos próprios inventramos um método de as fazer funcionar porque nem todos têm a mesma forma de programar.

Agradeço a vossa ajuda que já é uma boa luz para mim.

Amigo He B Te My eu li o teu primeiro post e dai também retirei umas ideias.

Agora o que estou a tentar é algo totalmente diferente. Só quero que o programa abra se o ficheiro existir no dropbox. Se não existir quero que o programa não abra. Ou então ter o ficheiro de leitura no meu dropbox

Edited by estica

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.