Usuário com melhor resposta
Pegar o html de uma url passada por parametro

Pergunta
-
Pessoal,
estou montando um script que a partir de uma url eu pego o conteudo da página, sendo que tem algumas urls que ao invés de retornar um html ela retornar uma string
1326|32.431.186,77|
- 30
- 19
- 10
- 18
- 50
- 11
- 10
- 11
- 18
- 19
- 30
- 50
, eu queria pegar esses valores, mas a minha rotina sempre me retorna null, alguém pode me ajudar?
private void button1_Click(object sender, System.Windows.RoutedEventArgs e) { string url = @"http://www.caixa.gov.br/paginaxpto"; System.Uri targetUri = new System.Uri(url); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri); request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request); } private void ReadWebRequestCallback(IAsyncResult callbackResult) { HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult); using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream())) { string results = httpwebStreamReader.ReadToEnd(); //TextBlockResults.Text = results; //-- on another thread! Dispatcher.BeginInvoke(() => lblResultado.Text = results); } myResponse.Close(); }
<br/>
<br/>
Respostas
-
Confirma-se!! Utiliza o endereço que coloquei no meu post anterior para fazer o download do SDK 7.1 final e actualiza o sistema!
Depois disso o código deve funcionar correctamente, mas tens que manter aquela linha que te indiquei! ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Marcado como Resposta Paulo Rogério Martins Marques sexta-feira, 14 de outubro de 2011 14:40
Todas as Respostas
-
-
Ora viva,
Já tive alguns problemas deste tipo no passado, e no final vim a descobrir que alguns cabeçalhos no pedido (HttpWebRequest) não fazem mal nenhum, bem pelo contrário! :)
Experimenta por exemplo definir o HttpWebRequest.UserAgent para "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" e torna a fazer o pedido!
Outras coisas que podes definir é o HttpWebRequest.Accept!
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Editado Pedro LamasMVP quinta-feira, 13 de outubro de 2011 09:31
-
Amigo,fiz alguns testes e não obtive sucesso!
Vou postar meu código abaixo para que possa analisar, pois uma url vem o conteudo e a outra não.private void button1_Click(object sender, System.Windows.RoutedEventArgs e) { //string url = @"http://www.caixa.gov.br/paginaxpto"; string url = @"http://www28.brinkster.com/pauloprojetos/teste.asp"; System.Uri targetUri = new System.Uri(url); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri); request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MANUFACTURER; DEVICE)"; request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request); } private void ReadWebRequestCallback(IAsyncResult callbackResult) { HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult); using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream())) { string results = httpwebStreamReader.ReadToEnd(); //TextBlockResults.Text = results; //-- on another thread! Dispatcher.BeginInvoke(() => lblResultado.Text = results); } myResponse.Close(); }
- Editado Paulo Rogério Martins Marques sexta-feira, 14 de outubro de 2011 14:47
-
Caro Paulo, acabei de experimentar o teu código e funcionou sem qualquer problema, recebi o mesmo conteúdo que se acedesse ao URL que indicaste via browser...
A única coisa de diference que fiz foi mesmo substituir a linha do Dispatcher por:
Dispatcher.BeginInvoke(() => { System.Windows.MessageBox.Show(results); });
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas -
Vc testou com a url
http://www.caixa.gov.br/paginaxpto
?- Editado Paulo Rogério Martins Marques sexta-feira, 14 de outubro de 2011 14:47
-
Não paulo, de facto tinha utilizado o segundo endereço (o que não está comentado)
Como o primeiro (o que agora indicou) de facto dava-me esse problema, então recorri ao Fiddler para ver o que se passa, abri o emulador, testei, e vi que estava sempre a fazer "redirect" do pedido sem devolver nada.
Depois experimentei no browser e o Fiddler mostrou a diferença: depois do primeiro "redirect", o browser juntou um header extra e só aí obteve resultados:
Cookie: security=true
Assim, basta adicionar a seguinte linha ANTES de executar o pedido para este funcionar:
request.Headers["Cookie"] = "security=true";
Vais ver que assim a resposta já vem preenchida! ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Sugerido como Resposta Pedro LamasMVP sexta-feira, 14 de outubro de 2011 13:43
-
Pedro,
fiz a alteração que comentou e agora estou tomando erro na hora de setar o cookie, veja como ficou meu código!
private void button1_Click(object sender, System.Windows.RoutedEventArgs e) { string url = @"http://www.caixa.gov.br/paginaxpto"; //string url = @"http://www28.brinkster.com/pauloprojetos/teste.asp"; System.Uri targetUri = new System.Uri(url); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri); request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MANUFACTURER; DEVICE)"; request.Headers["Cookie"] = "security=true"; request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request); } private void ReadWebRequestCallback(IAsyncResult callbackResult) { HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult); using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream())) { string results = httpwebStreamReader.ReadToEnd(); //TextBlockResults.Text = results; //-- on another thread! Dispatcher.BeginInvoke(() => lblResultado.Text = results); } myResponse.Close(); }
- Editado Paulo Rogério Martins Marques sexta-feira, 14 de outubro de 2011 14:48
-
Paulo, acabei de criar um projecto de teste com o mesmo código que falamos, por favor faz download e experimenta!
http://dl.dropbox.com/u/28356/PhoneApp1.zip
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas -
-
No meu lado funciona bem! :)
Qual é a versão do SDK que tens instalada? Tens a certeza de ser a última??
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas -
Caramba,
eu to me matando a semana toda e será que o problema é de alguma atualização?
Eu atualizei sim, só não sei se saiu alguma outra depois.Como eu faço pra ver essa atualização?
seria no menu help > About Microsoft Visual Studio?
Resolvi baixar e atualizar novamentehttp://www.kunal-chowdhury.com/2011/09/download-windows-phone-71-sdk-rtw-all.html
De qualquer forma te agradeço pela ajuda!
- Editado Paulo Rogério Martins Marques sexta-feira, 14 de outubro de 2011 14:27
-
Do Visual Studio 2010, há o SP1 aqui:
http://www.microsoft.com/download/en/details.aspx?id=23691
Do Windows Phone SDK aqui:
http://www.microsoft.com/download/en/details.aspx?id=27570
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Sugerido como Resposta Pedro LamasMVP sexta-feira, 14 de outubro de 2011 14:34
-
-
Confirma-se!! Utiliza o endereço que coloquei no meu post anterior para fazer o download do SDK 7.1 final e actualiza o sistema!
Depois disso o código deve funcionar correctamente, mas tens que manter aquela linha que te indiquei! ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Marcado como Resposta Paulo Rogério Martins Marques sexta-feira, 14 de outubro de 2011 14:40
-
Sabe qual a url do sdk para instalar offline?
To baixando esse daqui http://www.kunal-chowdhury.com/2011/09/download-windows-phone-71-sdk-rtw-all.htmlWindows Phone 7.1 SDK (Standalone/Offline Installer, ISO Image) – 730 MB
-
É mesmo esse! :)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas -