У меня проблемы с отправкой данных POST, которые включают символы, такие как "+" в поле пароля,
string postData = String.Format("username={0}&password={1}", "anyname", "+13Gt2");
Я использую HttpWebRequest и веб-браузер, чтобы увидеть результаты, и когда я пытаюсь войдите из моих C # WinForms, используя HttpWebRequest для отправки данных на сайт, он говорит мне, что пароль неверный.(в исходном коде [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. Я ценю ваше время и внимание, надеюсь, вы можете мне помочь.Спасибо.