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 - [Vb.net] Send POST data nuova pagina web
Forum - C# / VB.NET - [Vb.net] Send POST data nuova pagina web

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
tatino (Normal User)
Rookie


Messaggi: 27
Iscritto: 10/09/2013

Segnala al moderatore
Postato alle 13:36
Lunedì, 08/12/2014
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.

PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 294
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 16:22
Lunedì, 08/12/2014
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

  1. using (var client = new HttpClient())
  2. {
  3.     var values = new List<fieldandvalue<string, string>>();
  4.     values.Add(new fieldandvalue<string, string>("field1", "value1"));
  5.     values.Add(new fieldandvalue<string, string>("field2", "value2"));
  6.  
  7.     var content = new FormUrlEncodedContent(values);
  8.  
  9.     var response = await client.PostAsync("http://localhost/page.asp", content);
  10.  
  11.     var responseString = await response.Content.ReadAsStringAsync();
  12. }


Ultima modifica effettuata da alex1995 il 08/12/2014 alle 16:23
PM Quote
Avatar
tatino (Normal User)
Rookie


Messaggi: 27
Iscritto: 10/09/2013

Segnala al moderatore
Postato alle 17:22
Lunedì, 08/12/2014
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.

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 20:37
Lunedì, 08/12/2014
Testo quotato

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.

PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 294
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 20:48
Lunedì, 08/12/2014
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#

  1. InternetExplorer IEControl = new InternetExplorer();
  2. IWebBrowserApp IE = (IWebBrowserApp)IEControl;
  3. IE.Visible = true;
  4.  
  5. ASCIIEncoding Encode = new ASCIIEncoding();
  6. byte[] datiPOST = Encode.GetBytes("field1=value1&field2=value2");
  7.  
  8. string URLsito = "http://localhost/page.asp";
  9.  
  10. string PostHeaders = "Content-Type: application/x-www-form-urlencoded";
  11.  
  12. IE.Navigate(URLsito, null, null, datiPOST, PostHeaders);



questa è la documentazione completa se ti serve http://msdn.microsoft.com/en-us/library/aa752084%28v=vs.85 ....

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 20:57
Lunedì, 08/12/2014
Fantastico, in casa Microsoft non lasciano nulla al caso.

PM Quote
Avatar
tatino (Normal User)
Rookie


Messaggi: 27
Iscritto: 10/09/2013

Segnala al moderatore
Postato alle 22:19
Lunedì, 08/12/2014
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.

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 0:02
Martedì, 09/12/2014
è 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.

PM Quote
Avatar
alex1995 (Normal User)
Expert


Messaggi: 294
Iscritto: 27/01/2011

Segnala al moderatore
Postato alle 10:54
Martedì, 09/12/2014
beh per fare come in ie non ho trovato niente però se ti serve chrome o firefox per altre ragioni puoi fare l' embedding nella tua applicazione con queste 2 librerie.

firefox: https://code.google.com/p/geckofx/

chrome: https://github.com/cefsharp/CefSharp

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo