Sul sito MSDN c'è un example of some C# code che mostra come effettuare una richiesta web con i dati POST. Ecco un estratto di tale codice:Richiesta Web C# con domanda di codifica POST
WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
request.Method = "POST";
string postData = "This is a test that posts this string to a Web server.";
byte[] byteArray = Encoding.UTF8.GetBytes (postData); // (*)
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write (byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
...more...
La linea segnato (*)
è la linea che mi lascia perplesso. I dati non dovrebbero essere codificati usando il metodo UrlEncode piuttosto che UTF8? Non è quello che implica application/x-www-form-urlencoded
?
Può application/x-www-form-urlencoded includono caratteri non ASCII? Ho interpretato questo per significare no. http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 o lo sto fraintendendo? –
Come nota in precedenza da Martin Smith, 'application/x-www-form-urlencoded' indica che il contenuto è stato codificato in un modo specifico. In che modo utilizzare Encoding.UTF8 risolve questo problema? – rlandster
@ Martin Smith: non so. Basta usare la funzione UrlEncode per codificare i nomi e i valori e si dovrebbe andare bene. Penso che l'esempio usi UTF8 perché è quello che sono le stringhe letterali in C#. –