none
Pegar o html de uma url passada por parametro RRS feed

  • 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
    |0|0,00|179|17.249,11|13.207|333,97||08/10/2011|JARAGUÁ DO SUL|SC|C||1330|0|6.535.528,64||
    • 10
    • 11
    • 18
    • 19
    • 30
    • 50
    |38.000.000,00|13/10/2011|49.838.224,59|52.738.340,00


     

    , 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/>
    

    terça-feira, 11 de outubro de 2011 20:31

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
    sexta-feira, 14 de outubro de 2011 14:34

Todas as Respostas

  • Quando eu coloco uma url de alguma página que me retorne um html funciona, mas no meu caso a url que eu tenho passado retorna somente uma string
    terça-feira, 11 de outubro de 2011 21:25
  • 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
    quinta-feira, 13 de outubro de 2011 09:30
  • 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();
            }
    


     


    quinta-feira, 13 de outubro de 2011 23:04
  • 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
    sexta-feira, 14 de outubro de 2011 09:55
  • Vc testou com a url
    http://www.caixa.gov.br/paginaxpto


    ?

    sexta-feira, 14 de outubro de 2011 12:38
  • 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
    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();
            }
    


     


    sexta-feira, 14 de outubro de 2011 13:59
  • 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
    sexta-feira, 14 de outubro de 2011 14:06
  • Pedro,

    abri seu projeto e acabou dando o mesmo erro.

    Vou tentar descobrir o que está acontecendo. Segue abaixo o erro que tomei ao rodar seu projeto.

     

    sexta-feira, 14 de outubro de 2011 14:14
  • 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
    sexta-feira, 14 de outubro de 2011 14:18
  • 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 novamente

    http://www.kunal-chowdhury.com/2011/09/download-windows-phone-71-sdk-rtw-all.html

     

    De qualquer forma te agradeço pela ajuda!

     


    sexta-feira, 14 de outubro de 2011 14:22
  • 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
    sexta-feira, 14 de outubro de 2011 14:28
  • Acho que o problema que estou tendo que o meu não é a versão final, veja o print!
    sexta-feira, 14 de outubro de 2011 14:32
  • 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
    sexta-feira, 14 de outubro de 2011 14:34
  • 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.html

     

     

    Windows Phone 7.1 SDK (Standalone/Offline Installer, ISO Image) – 730 MB

    sexta-feira, 14 de outubro de 2011 14:42
  • É mesmo esse! :)


    Pedro Lamas
    DevScope | Senior Solution Developer & WP7 Development Speaker
    www.pedrolamas.com | @pedrolamas
    sexta-feira, 14 de outubro de 2011 14:44
  • Atualizei e funcionou!

    Obrigado! 
    sexta-feira, 14 de outubro de 2011 19:51