Запуск приведенного ниже кода с помощью Fiddler показывает, что знаки плюс преобразуются в какой-то символ пробела.Какую кодировку я должен использовать, чтобы предотвратить преобразование данных?Я хотел бы сохранить знаки плюс и т. Д.
РЕДАКТИРОВАТЬ: Обновленный пример кода
string postData = "test1=test+plussign&test2=another++twoplussigns";
private static byte[] EncodePostData(string postData)
{
StringBuilder sb = new StringBuilder();
string[] pairs = postData.Split('&');
foreach (string pair in pairs)
{
string key = Uri.EscapeDataString(pair.Split('=')[0]);
string value = Uri.EscapeDataString(pair.Split('=')[1]);
sb.AppendFormat("{0}={1}&",key, value);
}
sb.Remove(sb.Length - 1, 1);
return HttpUtility.UrlEncodeToBytes(sb.ToString());
}
А вот метод вызова
byte[] data = EncodePostData(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.03";
request.CookieContainer = cookies;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
ServicePointManager.Expect100Continue = false;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
HttpWebResponse Response = (HttpWebResponse)request.GetResponse();
Response.Close();