Oppure

Loading
13/04/07 20:48
seven.7
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="dmp.dynmark.com/smspresstrial/…;
<links>
<link name="dmp.dynmark.com/smspresstrial/…; />
</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
aaa
14/04/07 2:03
AnyWay
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 14/04/07 2:06
aaa
14/04/07 5:06
seven.7
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
aaa
14/04/07 13:42
AnyWay
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:
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 14/04/07 13:53
aaa
14/04/07 13:51
seven.7
l'eccezione wev non mi permette di elaborare il codice così, cmq in quale linguaggio potresti aiutarmi? c#?
aaa
14/04/07 13:54
AnyWay
Prova a vedere ora se ti è più d'aiuto, ho aggiunto qualche riga, comunque si, C#
aaa
14/04/07 14:50
seven.7
potresti farmi un esempio in c# ?
aaa
14/04/07 15:10
AnyWay
                using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse())
                {
 if (myResponse.StatusCode == HttpStatusCode.OK)
{
                    using (TextReader Leggi = new StreamReader(myResponse.GetResponseStream(), Encoding.ASCII))
                    {
	                    if (Leggi.ReadToEnd().Contains("Login effettuato con successo"))
	                    {
	                        Status.Text = "Login Effettuato..";
	                    }
	                    else
	                    {
	                        Status.Text = "Login Errato..";
	                    }
                    }
}
                }

Una cosa tipo questa
aaa