2009-04-20 15 views
6

Kiedy przesłaniu treści z mojego C# aplikacji do witryny w przeszłości Używałem żądania POST tak:C# HttpWebReqest - uciec zawartości POST?

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://" + this.server + "/log.php"); 
    wr.Method = "POST"; 
    wr.ContentType = "application/x-www-form-urlencoded"; 
    string paramString = "v=" + this.version + "&m=" + this.message; 
    wr.ContentLength = paramString.Length; 
    StreamWriter stOut = new StreamWriter(wr.GetRequestStream(), System.Text.Encoding.ASCII); 
    stOut.Write(paramString); 
    stOut.Close(); 

Moim problemem jest to, że teraz jestem w sytuacji, w której będzie this.message najprawdopodobniej zawierają znaki nowej linii, tabulatory i znaki specjalne, w tym "&" i "=". Czy muszę uciec przed tą treścią? Jeśli tak to jak?

Odpowiedz

10

Można użyć HttpUtility.HtmlEncode/HtmlDecode lub UrlEncode/UrlDecode odpowiednio.

+0

Tak. UrlEncode było tym, czego potrzebowałem: http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx Dzięki. –

+0

Crud. To nie zadziała. Potrzebuję metody .Net 2.0. –

+0

To już od 1.0 :) –

3

Tylko dla odniesienia, rozwiązanie mojego problemu było:

System.Web.HttpUtility.UrlEncode

który jest obsługiwany przez wszystkie wersje .NET Framework = P

Specjalnie używam przeciążenie to zajmuje string as an argument. Uruchomienie tego we wszystkich wartościach parametrów spowoduje, że będą bezpieczne dla POSTING.

1

system.Web jest nieaktualne - zamiast używać System.Net.WebUtility ...