Jump to content
Dotinho

[Resolvido] webclient internal error 500

Recommended Posts

Dotinho

Bom dia Pessoal,

Tenho uma situação chata, que ja andei a dar ás voltas e não sei o que posso fazer, eu explico.

por exemplo neste site http://office.microsoft.com/en-us/images/results.aspx?qu=icons&ex=1 onde tem imagens e icones, já há algum tempo fiz um programa para ler o site atraves do webcliente.downloadString(<url>), e depois ele escolhe as imagens e guarda-as numa pasta.

Só que em alguns sites, uma vezes da bem, outras vezes aparece o error "he remote server returned an error: (500) Internal Server Error".

O engraçado é que se abrir o mesmo link no IE, já funciona..

No webclient já adicionei coockies de alguns sites, mas mesmo assim não dá..

Alguem já passou pelo mesmo? ou tem alguma ideia?

Luis Lourenço


Luis Lourenço

Share this post


Link to post
Share on other sites
cdaniel.marques

Já experimentas-te usar um user agent?

Dim client As New WebClient()

' Add a user agent header in case the
' requested URI contains a query.
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")

http://social.msdn.microsoft.com/Forums/vstudio/en-US/56d76153-8e9c-49d8-ab16-a4043dffbbb3/server-error-500-in-using-webclientdownloadstring-in-aspnet-vbnet

http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.100).aspx

Edited by cdaniel.marques

Share this post


Link to post
Share on other sites
Dotinho

Obrigado null, mas mesmo assim não deu.. :(

O engraçado, é que se eu fizer um Webrowser escondido e carregar o link por lá, e depois adquirir o html em string, já dá.. mas demora muito mais tempo. Acho que é por ficar a carregar a página toda..


Luis Lourenço

Share this post


Link to post
Share on other sites
cdaniel.marques

"Try-Catch User" :) , substituiste o nome da váriavel que eu forneci: "client", pela que tu estás a usar: "webcliente"?:

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")

Edited by cdaniel.marques

Share this post


Link to post
Share on other sites
Dotinho

Então pois claro:


			  Try
		wc = New WebClient()
		wc.Headers.Add("Cookie", "23019324.494424916.1340739428.1340739428.1340739428.1")
		wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
		pg = wc.DownloadString(url)
	Catch ex As Exception
		MsgBox(ex.Message & vbNewLine & vbNewLine & url)
		Exit Sub
	End Try

e foi assim, testei com e sem cookie, ou seja uma de cada vez e as duas juntas..


Luis Lourenço

Share this post


Link to post
Share on other sites
cdaniel.marques

Funcionaria com um Stream Reader?

Dim client As New WebClient()

' Add a user agent header in case the
' requested URI contains a query.
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")

Dim data As Stream = client.OpenRead(url)
Dim reader As New StreamReader(data)
Dim s As String = reader.ReadToEnd()
TextBox1.Text = s
data.Close()
reader.Close()

Edited by cdaniel.marques

Share this post


Link to post
Share on other sites
Dotinho

infelizmente, comporta-se da mesma maneira. :(

Try
		wc = New WebClient()
		wc.Headers.Add("Cookie", "23019324.494424916.1340739428.1340739428.1340739428.1")
		wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
		'pg = wc.DownloadString(url)
		Dim s As IO.Stream = wc.OpenRead(url)
		Dim sr As New IO.StreamReader(s)
		pg = sr.ReadToEnd()
	Catch ex As Exception
		MsgBox(ex.Message & vbNewLine & vbNewLine & url)
		Exit Sub
	End Try

vou optar por carregar a página num webrowser e depois ler a partir de lá...

## EDIT ##

Fui a um site ver os Headers mais comuns, e fiz igual no meu webclient, e não deu nada.


 wc.Headers.Add("User-agent", "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.16")
		wc.Headers.Add("Accept", "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1")
		wc.Headers.Add("Accept-Encoding", "gzip, deflate")
		wc.Headers.Add("Accept-Language", "pt-PT,pt;q=0.9,en;q=0.8")
		wc.Headers.Add("Connection", "Keep-Alive")

Edited by Dotinho

Luis Lourenço

Share this post


Link to post
Share on other sites
thoga31

Só um aparte...

"Try-Catch User" :)

O nome do membro é Dotinho. Try-catch user é apenas um título do membro dado em função do seu número de posts. Da mesma forma, tu és o cdaniel.marques e tens o título "Novo Membro" (que é também, neste caso, um grupo à parte).


Knowledge is free!

Share this post


Link to post
Share on other sites
cdaniel.marques

@thoga31: Eu sei. Era ironia, porque o Dotinho tinha chamado null:

Obrigado null, mas mesmo assim não deu.. :(

Daí o smile. :)

@Dotinho: consegues postar um Print do Erro?

Que tipo de controlo é a pg?

pg = sr.ReadToEnd()

Consegui fazer um load da página que referiste para uma TextBox.

Edited by cdaniel.marques

Share this post


Link to post
Share on other sites
Dotinho

Agradeço as vossas sugestões, mas penso que já está resolvido..

Não sei bem o porque.

Obrigado a todos.


Luis Lourenço

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • 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.