Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2012, 21:14   #1
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
[VB. NET] Lettura pagina web

Ciao a tutti

Sto realizzando un'applicazione metro con visual basic .net.

Devo recuperare delle informazioni da alcune pagine web dinamiche (php) e la maniera più semplice mi è sembrata quella di scaricare il sorgente e di metterlo in una stringa e successivamente farne il parsing.

Ho trovato in internet molti script che usano Webrequest e WebResponse ma sono vecchi e non vanno più bene.

Venendo al dunque, come posso recuperare il testo della pagina e metterlo in una stringa?

Grazie


EDIT:

Sono incappato nel problema opposto e non riesco a venirne a capo. Devo inviare tramite POST due valori ad una pagina PHP.

Nella pagina ci sono due campi. Uno che ha name=login e uno che ha name=password. Io devo inviare i dati di login in modo da effettuare l'accesso a quella pagina. Il problema non mi sembra complesso ma il mio codice non va.

E' questo qui:

Codice:
Dim Address As String = Address.Text

Dim data As Dictionary(Of [String], [String]) = New Dictionary(Of String, String)()
data("username") = Field.Text
data("password") = Field2.Text

Dim content As HttpContent = New FormUrlEncodedContent(data)

Dim response As HttpResponseMessage = Await rootPage.httpClient.PostAsync(Address, content)
e poi visualizzo il response in una textbox, il problema è che il sorgente della pagina di response è sempre quello della pagina con il login non effettuato. Quindi il login non viene effettuato. Dov'è che sbaglio?

Ultima modifica di birmarco : 07-11-2012 alle 18:04.
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2012, 14:54   #2
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
nessuno? :-)
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2012, 16:35   #3
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
http://code.msdn.microsoft.com/windo...ample-55700664

Questo codice non ti basta come esempio?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2012, 16:41   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Non mi pare molto complesso:
Dim response As HttpResponseMessage = Await rootPage.httpClient.GetAsync(resourceAddress)
Dim responseBodyAsText As String
responseBodyAsText = Await response.Content.ReadAsStringAsync()

una volta istanziato HttpClient chiamo il metodo GetAsync e utilizzando le nuove estensioni per la programmazione asincrona automaticamente ti ritrovi con la variabile valorizzata. Niente di tremendamente complesso.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2012, 17:53   #5
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Grazie mille della risposta

Purtroppo per me programmazione asincrona & co sono cose nuove, per cui non riesco a capirci molto

Ho inserito il tuo codice nella mia funzione, ma ho dovuto modificarlo leggermente perchè mi dava degli errori

Ora è così:

Codice:
Public Async Function getPage(URL As String) As Task
            Dim Client As New System.Net.Http.HttpClient

            Dim response As HttpResponseMessage = Await Client.GetAsync(URL)

            Dim responseBody As String
            responseBody = Await response.Content.ReadAsStringAsync()

End Function
Ho dovuto creare un oggetto HttpClient per poter chiamare GetAsync(URL).

Però ora ho un problema Come faccio a far uscire dalla funzione quella stringa? Essendo una funzione Async (non mi permette di fare altrimenti) non posso usare parametri BtRef nè fare return diversi da Task

PS. Cmq sì, effettivamente non è così complesso a guardarlo, anzi sembra abbastanza semplice. Il problema è che non sapevo da dove partire

Ultima modifica di birmarco : 30-10-2012 alle 17:55.
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2012, 08:49   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da birmarco Guarda i messaggi
Grazie mille della risposta

Purtroppo per me programmazione asincrona & co sono cose nuove, per cui non riesco a capirci molto

Ho inserito il tuo codice nella mia funzione, ma ho dovuto modificarlo leggermente perchè mi dava degli errori
Beh sei partito da Metro che è totalmente asincrono, non hai fatto proprio una grande scelta...

Per il codice io avevo solo copiato dall'esempio Microsoft

Quote:
Ora è così:

Codice:
Public Async Function getPage(URL As String) As Task
            Dim Client As New System.Net.Http.HttpClient

            Dim response As HttpResponseMessage = Await Client.GetAsync(URL)

            Dim responseBody As String
            responseBody = Await response.Content.ReadAsStringAsync()

End Function
Ho dovuto creare un oggetto HttpClient per poter chiamare GetAsync(URL).

Però ora ho un problema Come faccio a far uscire dalla funzione quella stringa? Essendo una funzione Async (non mi permette di fare altrimenti) non posso usare parametri BtRef nè fare return diversi da Task

PS. Cmq sì, effettivamente non è così complesso a guardarlo, anzi sembra abbastanza semplice. Il problema è che non sapevo da dove partire
Nell'esempio usano questo:
Codice:
    Friend Shared Async Function DisplayTextResult(response As HttpResponseMessage, output As TextBox) As Task 
        Dim responseBodyAsText As String 
        output.Text &= response.StatusCode & " " & response.ReasonPhrase & Environment.NewLine 
        responseBodyAsText = Await response.Content.ReadAsStringAsync() 
        responseBodyAsText = responseBodyAsText.Replace("<br>", Environment.NewLine) 
        ' Insert new lines 
        output.Text &= responseBodyAsText 
    End Function
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2012, 09:38   #7
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Beh sei partito da Metro che è totalmente asincrono, non hai fatto proprio una grande scelta...

Per il codice io avevo solo copiato dall'esempio Microsoft



Nell'esempio usano questo:
Codice:
    Friend Shared Async Function DisplayTextResult(response As HttpResponseMessage, output As TextBox) As Task 
        Dim responseBodyAsText As String 
        output.Text &= response.StatusCode & " " & response.ReasonPhrase & Environment.NewLine 
        responseBodyAsText = Await response.Content.ReadAsStringAsync() 
        responseBodyAsText = responseBodyAsText.Replace("<br>", Environment.NewLine) 
        ' Insert new lines 
        output.Text &= responseBodyAsText 
    End Function


Sarà un po' dura ma almeno imparo qualcosa in più, non mi piace imparare qualcosa facendo solo esercizi fine a se stessi Lo trovo veramente noioso...

Cmq non è proprio uno dei miei primi lavori di programmaziome, con VB il primo veramente serio... se viene qualcosa

Ma output.text non è l'output su console?

Farò una Metro App su console

Cmq in attesa di trovare una soluzione, ho pensato di inviare il risultato ad altre funzioni, direttamente dal corpo della funzione task. Che sono le funzioni che gestiscono quell'output e lo piazzano al posto giusto. COsì evito a monte il problema. Anche perchè mi pare che concettualmente sia giusto così o sbaglio? Cioè la programmazione async non prevede che vengano eseguite delle elaborazioni scollegate dalla continuità dell'elaborazione principale? Quindi aspettarsi un output da una funzione così sarebbe assurdo perchè appunto non si sa quando arriva. Quindi anche tutti i miei tentativi darebbero errore, se il risultato non è ancora arrivato, o sbaglio?

Mantenendo tutto nel flusso async dovrei evitare ogni tipo di problema. Però penso che mi tocchi cmq gestire delle eccezioni, perchè se eseguo un comando che richiede che quell'output della procedura asincrona sia completato, e invece non è completato, avrei dei brutti problemi

Dovrei quindi mettermi a capire bene come funziona la classe Task, così da poter bloccare alcune operazioni prima che il Task async sia completato.

Correggimi se sto sbagliando

Di per sè mi sembra intelligente questa programmazione asincrona però in certi casi come il mio mi sembra una sofisticazione inutile, sarebbe stato più comodo avere anche il vecchio metodo, che anche se era bloccante nel mio caso sarebbe stato uguale...
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2012, 10:10   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da birmarco Guarda i messaggi


Sarà un po' dura ma almeno imparo qualcosa in più, non mi piace imparare qualcosa facendo solo esercizi fine a se stessi Lo trovo veramente noioso...

Cmq non è proprio uno dei miei primi lavori di programmaziome, con VB il primo veramente serio... se viene qualcosa

Ma output.text non è l'output su console?

Farò una Metro App su console
Non è che forse devi prima un po' studiarti il linguaggio?
output è di tipo TextBox.
L'hai almeno guardato l'esempio della Microsoft?

Domanda cosmica: perchè usi quella sola di VB???
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2012, 10:41   #9
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Non è che forse devi prima un po' studiarti il linguaggio?
output è di tipo TextBox.
L'hai almeno guardato l'esempio della Microsoft?

Domanda cosmica: perchè usi quella sola di VB???
Lo scroll del codice qui sul forum è scomodo, mi era sfuggito che era già stato dichiarato nella funzione

VB lo uso perchè mi piace Poi volevo provare a fare qualcosa con Metro per cui avevo 3 alternative:

- HTML5 e Javascript
- C#
- VB .Net

Usare HTML e Javascript non mi ispirava, per un programma desktop, C# non mi piace moltissimo, di VB conosco qualcosa per cui mi sono orientato su questo

VB mi piace perchè ha una sintassi pulita, del C# odio tutte le graffe e una sintassi che non è proprio chiarissima nella lettura. CIoè è vero che è come Java ecc ma se posso scegliere preferisco VB. Poi non sono cmq ad un livello elevatissimo quindi sono praticamente uguali, per quello che devo fare io.

Ma perchè dici che fa schifo?

Il linguaggio me l'ero studiato anni fa... anzi a dirla tutta avevo studiato il VB non .Net! Il .Net è arrivato dopo e ho cercato di integrare, per il tempo che avevo. Poi è da tantissimo che non lo uso, e nel frattempo ho usato altri linguaggi come Java e PHP. Da allora sono cambiate molte cose... e avendo ripreso l'altro giorno mi ci vorrà un po' per tornare in auge

La teoria di molte cose ce l'ho, a volte in altri linguaggi... il problema è capire come farlo in VB e punto fondamentale non conosco quasi nessuna delle principali librerie di VB
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2012, 11:48   #10
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Alla fine sono giunto ad una soluzione.

Sto costruendo una classe Pagina che oltre agli altri metodi che mi servono ha queta funzione di recupero della pagina. Il risultato di questa procedura lo piazzo in una variabile privata della classe. Usando await so quando finisce e procedo.
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2012, 18:04   #11
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Sono incappato nel problema opposto e non riesco a venirne a capo. Devo inviare tramite POST due valori ad una pagina PHP.

Nella pagina ci sono due campi. Uno che ha name=login e uno che ha name=password. Io devo inviare i dati di login in modo da effettuare l'accesso a quella pagina. Il problema non mi sembra complesso ma il mio codice non va.

E' questo qui:

Codice:
Dim Address As String = Address.Text

Dim data As Dictionary(Of [String], [String]) = New Dictionary(Of String, String)()
data("username") = Field.Text
data("password") = Field2.Text

Dim content As HttpContent = New FormUrlEncodedContent(data)

Dim response As HttpResponseMessage = Await rootPage.httpClient.PostAsync(Address, content)
e poi visualizzo il response in una textbox, il problema è che il sorgente della pagina di response è sempre quello della pagina con il login non effettuato. Quindi il login non viene effettuato. Dov'è che sbaglio?
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2012, 11:19   #12
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
UP UP UP
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2012, 14:20   #13
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da birmarco Guarda i messaggi
UP UP UP
Premesso che essendo cambiato il topic sarebbe il caso di aprire una nuova discussione, hai verificato con un browser di stare passando tutti i dati necessari (cookie, identificatori di sessione, ecc)?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2012, 14:26   #14
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Premesso che essendo cambiato il topic sarebbe il caso di aprire una nuova discussione, hai verificato con un browser di stare passando tutti i dati necessari (cookie, identificatori di sessione, ecc)?
Non volevo monopolizzare il forum con mille richieste

I cookie non dovrebbero essere necessari, nella pagina ho una spunta "ricordami" che non è obbligatoria e che attiva il salvataggio dei cookie, ma io non invio quel dato e di default non ricorda nulla. Dovrebbe quindi aprire una sessione PHP.

Ma quindi il mio codice è giusto e potrebbe essere una problematica di questo tipo? Oppure è tutto cannato?
birmarco è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Criptovalute, il Senato USA blocca il Cl...
Samsung Galaxy S26 FE a 635€ con coupon ...
Tesla porta il Cybercab in Cina, ma solo...
I modelli di OpenAI mentono e si nascond...
Rivoluzione in arrivo per il Game Pass? ...
Lefant V1 torna a 99€: scopa elettrica s...
L'FBI sequestra NightmareStresser: centi...
Copilot sparisce da Outlook classico dop...
DEEPOWER Fat Bike 20'': la e-bike con ba...
Sam Altman a Dreamforce 2026, OpenAI ver...
Volkswagen ID.3 GTI: la GTI elettrica pi...
Google Pixel: 110 vulnerabilità chiuse c...
Il co-inventore di ChatGPT lancia un mod...
NvpwrControl: un tool sblocca il limite ...
Samsung torna in gioco: potrebbe produrr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:42.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v