C # Escape Plus Sign (+) в POST с использованием HttpWebRequest
У меня проблемы с отправкой данных POST, которые включают символы, такие как «+» в поле пароля,
string postData = String.Format("username={0}&password={1}", "anyname", "+13Gt2");
Я использую HttpWebRequest и веб-браузер, чтобы увидеть результаты, и когда я пытаюсьавторизоваться из моих C # WinForms, использующих HttpWebRequest для POST-данных на сайт, он говорит мне, что пароль неверный. (в исходном коде [richTexbox1] и webBrowser1). Попытка сделать это с другой моей учетной записью, которая не содержит символа «+», позволяет мне правильно войти в систему (используя массив байтов и записав его в поток)
byte[] byteArray = Encoding.ASCII.GetBytes(postData); //get the data
request.Method = "POST";
request.Accept = "text/html";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream newStream = request.GetRequestStream(); //open connection
newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
newStream.Close(); //this works well if user does not includes symbols
Из этогоВопрос я нашел этоHttpUtility.UrlEncode()
это решение, чтобы избежать недопустимых символов, но я не могу понять, как правильно его использовать, мой вопрос, после того, как url-кодирование моих данных POST сurlEncode()
как отправить данные на мойзапрос правильно?
Вот как я пытался ЧАСЫ, чтобы все заработало, но не повезло,
Первый способ
string urlEncoded = HttpUtility.UrlEncode(postData, ASCIIEncoding.ASCII);
//request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = urlEncoded.Length;
StreamWriter wr = new StreamWriter(request.GetRequestStream(),ASCIIEncoding.ASCII);
wr.Write(urlEncoded); //server returns for wrong password.
wr.Close();
Второй метод
byte[] urlEncodedArray = HttpUtility.UrlEncodeToBytes(postData,ASCIIEncoding.ASCII);
Stream newStream = request.GetRequestStream(); //open connection
newStream.Write(urlEncodedArray, 0, urlEncodedArray.Length); // Send the data.
newStream.Close(); //The server tells me the same thing..
Я думаю, что я делаю неправильно, как URL-кодированный должен быть отправлен на запрос, я действительно прошу некоторую помощь, пожалуйста, я искал через Google и не смог найти больше информации о том, как отправить закодированный URL-адрес в HttpWebRequest .. Я ценю ваше время и внимание, надеюсь, вы сможете мне помочь. Спасибо.