Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Libro che spiega come...
Forum - C# / VB.NET - Libro che spiega come...

Avatar
seven.7 (Normal User)
Rookie


Messaggi: 30
Iscritto: 24/12/2006

Segnala al moderatore
Postato alle 22:48
Venerdì, 13/04/2007
Vi chiedo solo una cosa : un libro che spieghi come creare applicazioni che gestiscono POST - GET di pagine web o meglio applicazioni che dati i valori eseguono un post login e prelevano pagine con il metodo get. Un buon esempio di programma da realizzare sono quei programmi che permettono l'invio di SMS free da web. Uno in particolare utilizza un sistema molto interessante... legge un file xml del tipo:

<provider provID="1836718491" name="zdmp.dynmark dimostrazione pratica" isZetaProvider="True">
  <action id="0" baseAction="-1" friendlyName="Send">
    <page submit="POST" okString="Registration Successful" referer="http://dmp.dynmark.com/smspresstrial/register.htm">;
      <links>
        <link name="http://dmp.dynmark.com/smspresstrial/Register.aspx" />
      </links>
      <fields>
        <field name="Msisdn" value="$%39$PrefixAndNumber" eval="True" />
        <field name="Submit1" value="Register" />
        <field name="hidReferrer" />
      </fields>
    </page>
  </action>
</provider>

poi con il programma sostituisce i valori del tipo $%39$PrefixAndNumber ecc... vi prego solo di aiutarmi a trovare il libro o almeno gli argomenti da studiare... Thanks :D

PM Quote
Avatar
AnyWay (Ex-Member)
Rookie


Messaggi: 25
Iscritto: 05/02/2007

Segnala al moderatore
Postato alle 4:03
Sabato, 14/04/2007
vedi HttpWebRequest (Response per ricevere), oppure si può fare anche con altre.
Mentre per il file XML, secondo me il software di cui parlavi non fa altro che prendere alcuni valori dal file XML e passarli nella richiesta, e verificarne altri quando riceve la pagina (tipo "Registration Succesful")..

Ultima modifica effettuata da AnyWay il 14/04/2007 alle 4:06
PM Quote
Avatar
seven.7 (Normal User)
Rookie


Messaggi: 30
Iscritto: 24/12/2006

Segnala al moderatore
Postato alle 7:06
Sabato, 14/04/2007
ma io uso httpwebrequest e response ma purtroppo quando richiamo più volte la funzione mi da errore di timeout (una webexception) e non sono capace di scrivere il codice in modo da dire: "fino a quando il risultato non è ok riprova a fare il login post e i get", questo è il codice ke stò utilizzando:
   Public Shared Function FormLoginGet(ByVal loginUri As String, ByVal loginData As String, ByVal requestUri As String)
        Dim cookieContainer As New CookieContainer()
        Dim richiesta1 As HttpWebRequest
        richiesta1 = DirectCast(HttpWebRequest.Create(loginUri), HttpWebRequest)
        richiesta1.CookieContainer = cookieContainer
        richiesta1.Method = "POST"
        richiesta1.ContentType = "application/x-www-form-urlencoded"
        richiesta1.Timeout = 5000
        Dim encoding As New ASCIIEncoding()
        Dim loginDataBytes As Byte() = encoding.GetBytes(loginData)
        richiesta1.ContentLength = loginDataBytes.Length
        Dim stream As Stream
        stream = richiesta1.GetRequestStream()
        stream.Write(loginDataBytes, 0, loginDataBytes.Length)
        stream.Close()
        Dim risposta1 As HttpWebResponse
        risposta1 = DirectCast(richiesta1.GetResponse(), HttpWebResponse)
        Dim richiesta2 As HttpWebRequest
        richiesta2 = DirectCast(HttpWebRequest.Create(requestUri), HttpWebRequest)
        richiesta2.CookieContainer = cookieContainer
        richiesta2.Method = "GET"
        richiesta2.Timeout = 15000
        Dim ok As Boolean = False
        Dim risposta2 As WebResponse = richiesta2.GetResponse()
        Dim sr As New StreamReader(risposta2.GetResponseStream, System.Text.Encoding.UTF8)
        Dim risultato As String = sr.ReadToEnd()
        sr.Close()
        Return risultato
    End Function

PM Quote
Avatar
AnyWay (Ex-Member)
Rookie


Messaggi: 25
Iscritto: 05/02/2007

Segnala al moderatore
Postato alle 15:42
Sabato, 14/04/2007
Purtroppo con il codice non sono in grado di aiutarti perché di VB non capisco niente, però intanto potresti iniziare togliendo la proprietà Timeout perché tanto mi sembra che di default sia già di 100 secondi (quindi 100000ms e superiore a quella che hai impostato tu) e vedi se così ti da l'eccezione comunque..
Mentre per il controllo potresti usare:
Codice sorgente - presumibilmente C# / VB.NET

  1. If HttpWebResponse.StatusCode = HttpStatusCode.OK Then


e nel caso di successo controllare la pagina ricevuta (tipo controllare che la pagina contenga "Login Avvenuto con successo.")

Ultima modifica effettuata da AnyWay il 14/04/2007 alle 15:53
PM Quote
Avatar
seven.7 (Normal User)
Rookie


Messaggi: 30
Iscritto: 24/12/2006

Segnala al moderatore
Postato alle 15:51
Sabato, 14/04/2007
l'eccezione wev non mi permette di elaborare il codice così, cmq in quale linguaggio potresti aiutarmi? c#?

PM Quote
Avatar
AnyWay (Ex-Member)
Rookie


Messaggi: 25
Iscritto: 05/02/2007

Segnala al moderatore
Postato alle 15:54
Sabato, 14/04/2007
Prova a vedere ora se ti è più d'aiuto, ho aggiunto qualche riga, comunque si, C#

PM Quote
Avatar
seven.7 (Normal User)
Rookie


Messaggi: 30
Iscritto: 24/12/2006

Segnala al moderatore
Postato alle 16:50
Sabato, 14/04/2007
potresti farmi un esempio in c# ?

PM Quote
Avatar
AnyWay (Ex-Member)
Rookie


Messaggi: 25
Iscritto: 05/02/2007

Segnala al moderatore
Postato alle 17:10
Sabato, 14/04/2007
Codice sorgente - presumibilmente C++

  1. using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse())
  2.                 {
  3.  if (myResponse.StatusCode == HttpStatusCode.OK)
  4. {
  5.                     using (TextReader Leggi = new StreamReader(myResponse.GetResponseStream(), Encoding.ASCII))
  6.                     {
  7.                             if (Leggi.ReadToEnd().Contains("Login effettuato con successo"))
  8.                             {
  9.                                 Status.Text = "Login Effettuato..";
  10.                             }
  11.                             else
  12.                             {
  13.                                 Status.Text = "Login Errato..";
  14.                             }
  15.                     }
  16. }
  17.                 }


Una cosa tipo questa

PM Quote