tatino (Normal User)
Rookie
Messaggi: 27
Iscritto: 10/09/2013
|
Buongiorno signori e buona immacolata.
Come da titolo esiste un metodo per aprire una pagina web remota inviando i dati con il metodo POST?
Con il metodo System.Net.WebClient() non è un problema richiamare i dati ma il mio scopo è quello di aprire una pagina web esterna inviando le variabili senza usare GET.
Grazie.
Salvo.
|
|
alex1995 (Normal User)
Expert
Messaggi: 294
Iscritto: 27/01/2011
|
buona sera grazie e Buona Immacolata anche a te, puoi usare System.Net.Http http://msdn.microsoft.com/it-it/library/system.net.http(v= ... e fare qualcosa del genere:
Codice sorgente - presumibilmente Php |
using (var client = new HttpClient()) { var values = new List<fieldandvalue<string, string>>(); values.Add(new fieldandvalue<string, string>("field1", "value1")); values.Add(new fieldandvalue<string, string>("field2", "value2")); var content = new FormUrlEncodedContent(values); var response = await client.PostAsync("http://localhost/page.asp", content); var responseString = await response.Content.ReadAsStringAsync(); }
|
Ultima modifica effettuata da alex1995 il 08/12/2014 alle 16:23 |
|
tatino (Normal User)
Rookie
Messaggi: 27
Iscritto: 10/09/2013
|
Ciao Alex,
correggimi se sbaglio ma questa funzione permette di ricavare il response dell'interrogazione e non aprire la pagina esterna.
io avrei bisogno di usare process.start("http....") passando i valori POST e non con il classico GET.
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
Postato originariamente da tatino:
Ciao Alex,
correggimi se sbaglio ma questa funzione permette di ricavare il response dell'interrogazione e non aprire la pagina esterna.
io avrei bisogno di usare process.start("http....") passando i valori POST e non con il classico GET. |
Usando process.start tu stai "passando la palla" ad un programma esterno, che sarà il web browser. Quindi deve essere il browser che predisponga un metodo per passagli una richiesta POST magari per argomento in fase di avvio. Infatti in questi casi ci si impone il metodo GET perché gli argomenti vengono passano in modo esplicito (direi trasparente) nell'URL che il sistema interpreterà come vuole(avviando un web browser piuttosto che un altro). Se non hai maniera di operare sul codice della pagina web mi sa che dovrai ripiegare su una gestione interamente interna alla tua applicazione, in poche parole o GET o lasci perdere i web browser. |
|
alex1995 (Normal User)
Expert
Messaggi: 294
Iscritto: 27/01/2011
|
ciao scusami hai ragione, per fare quello che dici devi usare la libreria SHDocVw che per usarla devi aggiungere la referenza a microsoft internet controls.
e poi fare qualcosa del genere
Codice sorgente - presumibilmente C# |
InternetExplorer IEControl = new InternetExplorer ();IWebBrowserApp IE = (IWebBrowserApp)IEControl; IE.Visible = true; ASCIIEncoding Encode = new ASCIIEncoding ();byte[] datiPOST = Encode.GetBytes("field1=value1&field2=value2"); string URLsito = "http://localhost/page.asp"; string PostHeaders = "Content-Type: application/x-www-form-urlencoded"; IE.Navigate(URLsito, null, null, datiPOST, PostHeaders);
|
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
Fantastico, in casa Microsoft non lasciano nulla al caso.
|
|
tatino (Normal User)
Rookie
Messaggi: 27
Iscritto: 10/09/2013
|
Grandeee! Unica pecca..funge solo con IE.
Solo per sapere, secondo voi non esiste una classe generica che vada bene con tutti i browser?
Ma è quel qualcosa in più, già questo è un ottimo strumento.
Grazie!
Salvo.
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
è improbabile che esista proprio per il discorso che ti ho fatto in precedenza, quella classe funziona esclusivamente per IE perché è stata Microsoft a studiarla, predisponendo IE a questo tipo di operazioni.
|
|
alex1995 (Normal User)
Expert
Messaggi: 294
Iscritto: 27/01/2011
|
|
|