Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.210.143.119] |
|
Сообщ.
#1
,
|
|
|
здравствуйте!
Есть строка, аналогичная строке http запроса. "lang=ru&name=Jon&password=12345" без кавычек, естественно. Юникодные символы, кодируются через '%'. Надо бы эту строку, как-то разобрать. Желательно в коллекцию NameValueCollection. Оно, конечно и ручками можно. Только ведь во фреймворке, должна быть соответствующая утилитка. WebUtil, как я понял, только символы декодирует. |
Сообщ.
#2
,
|
|
|
Request.QueryString
|
Сообщ.
#3
,
|
|
|
Признаться, класс для разбора строки запроса я не знаю, но собсно тут посплитить строку через '&', потом через '=' и escape-последовательности разрулить через HttpUtility.UrlDecode, я так разумею.
|
Сообщ.
#4
,
|
|
|
Цитата UncleBob @ тут посплитить строку через '&', потом через '=' и escape-последовательности разрулить через HttpUtility.UrlDecode Дык я и говорю, что ручками можно. Но нафига велосипедить, ведь где-то уже это сделано. Тем более WebUtilite.UrlDecode появился только в dot net 4.5, а под хрюшей его ещё нет. Но наверное, проще будет именно посплитить. Добавлено Цитата MIF @ Request.QueryString Простите, не понял. А ссылочку можно? Нашел целых три класса, в sql, sharepoint и web.administration. Но кажись, всё не то. Добавлено О! Сам наткнулся на класс HttpUtility. Надеюсь он меня устроит. |
Сообщ.
#5
,
|
|
|
Цитата Eric-S @ Надеюсь он меня устроит. чем? |
Сообщ.
#6
,
|
|
|
метод ParseQueryString
http://msdn.microsoft.com/ru-ru/library/ms...(v=vs.100).aspx Действительно, он меня устроил. На входе передаю строку, на выходе получаю коллекцию значений. Это срез кода, исключительно для примера. // получить контекст HttpContext context = Listener.EndGetContext( result ); HttpRequest request = context.Request; HttpResponse response = context.Response; // коллекция post запроса NameValueCollection post; if( request.HasEntityBody ) { // получить текст запроса StreamReader sr = new StreamReader( request.InputStream, request.ContentEncoding ); String input = sr.ReadToEnd(); // разобрать Post = HttpUtility.ParseQueryString( input ); } Там пока непонятно с кодировкой. Написал без неё, всё заработало как нужно. Это я парсю, тело запроса, для получения данных отправленных из формы, методом post. Сам поток, перекодирую в строку, с указанной кодировкой, классом System.IO.StreamReader. Так текст запроса, закодирован ещё url encode. Сейчас вроде всё нормально. Надеюсь сюрпризов не вылезет. Так что тему закрываю. |
Сообщ.
#7
,
|
|
|
Цитата Eric-S @ Сам наткнулся на класс HttpUtility Цитата UncleBob @ разрулить через HttpUtility.UrlDecode правда, занятно |
Сообщ.
#8
,
|
|
|
Ха-эм. Действительно занятно. Извиняюсь, тупанул.
Я почему-то подумал на WebUtilite. Перед этим, как раз его мусолил. Глюки восприятия, однако. Извиняюсь. |