Il mio codice deve fornire alcune informazioni a un server tramite uno script php.In C#, è possibile aprire un URL in background, senza aprire un browser?
Fondamentalmente voglio chiamare www.sitename.com/example.php?var1=1&var2=2&var3=3
ma non voglio che il browser si apra, quindi Process.Start(URL);
non funzionerà.
Da quando vengo in questo sito per imparare e non per ottenere risposte, soprattutto, spiegherò cosa ho fatto finora e gli errori che ho ottenuto. Se conosci comunque una soluzione, sentiti libero di saltare la parte successiva.
Ho guardato intorno, e ho visto una soluzione per l'utilizzo di POST:
ASCIIEncoding encoding=new ASCIIEncoding();
string postData="var1=1&var2=2&var3=3";
byte[] data = encoding.GetBytes(postData);
// Prepare web request...
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://localhost/site.php");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
Tuttavia, richiedono l'uso di GET
non POST
. Inizialmente ho pensato che la soluzione potesse essere quella di cambiare myRequest.Method = "POST";
in GET
, ma questo non ha funzionato perché non è così che funziona GET
, esso estrae i dati dall'URL.
Così, poi ho cercato di modificare il codice precedente:
HttpwebRequest myRequest= (HttpWebRequest)WebRequest.Create("http://localhost/site.php" + postData);
Stream newStream = myRequest.GetRequestStream();
newStream.Close()
Sotto la logica che avrebbe chiamato l'URL, che (si spera) avviare la richiesta get_ sullo script php, e poi la vita sarebbe dandy Questo tuttavia ha portato alla seguente errore:
A first chance exception of type 'System.Net.ProtocolViolationException' occurred in System.dll
An unhandled exception of type 'System.Net.ProtocolViolationException' occurred in System.dll
Additional information: Cannot send a content-body with this verb-type.
Qualsiasi aiuto è apprezzato, e grazie.
per la prima soluzione, Visual Studio 2012 produce ed evidenzia ed evidenzia 'Stream newStream = myRequest.GetRequestStream();' per la seconda soluzione, non viene prodotto alcun errore, ma la pagina php non sembra registrare nulla . – echolocation
Se si utilizza [violinista] (http://fiddler2.com/) è possibile vedere quali chiamate vengono eseguite sul proxy di sistema. – rene
Ho trovato il problema. Per accedere a http: // yourserver/site.php' ho bisogno dell'autenticazione tramite un server di autenticazione centrale. Quindi, quando provo ad accedere al sito, mi reindirizza prima all'autenticazione. Sapete comunque di averlo passato, visto che ho il nome utente e la password corretti? Grazie per qualsiasi aiuto – echolocation