Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Парсинг POST-запросов


Автор: tarakanium 18.10.2012, 08:25
Добрый день!

Подскажите как лучше парсить пост запросы вида:
Код

/login/?login=admin&pass=pass&do=Login


Нужно распарсить и получить 2 переменные Sting login, String pass.

Заранее благодарен. 

Автор: LSD 18.10.2012, 10:29
Лучше всего поручить задачу парсинга HTTP запроса HTTP серверу.  smile 

Автор: tarakanium 18.10.2012, 14:04
Увы, пост запросы записаны в файл.

Автор: LSD 18.10.2012, 16:50
Можно попытаться заюзать http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/io/DefaultHttpResponseParser.html но не знаю насколько это будет легко.

Автор: Pretorian 18.10.2012, 17:31
Чтобы получить строку с параметрами, нужно использовать java.net.URI (java.net.URL не подойдёт, т.к. не указан протокол и т.д.).
Код

String str = "/login/?login=admin&pass=pass&do=Login";
URI url = new URI(str);
System.out.println(url.getQuery());

а дальше можно использовать метод
Код

public static Map<String, String> getQueryMap(String query)  
{  
    String[] params = query.split("&");  
    Map<String, String> map = new HashMap<String, String>();  
    for (String param : params)  
    {  
        String name = param.split("=")[0];  
        String value = param.split("=")[1];  
        map.put(name, value);  
    }  
    return map;  
}

Пример использования
Код

String query = url.getQuery();  
Map<String, String> map = getQueryMap(query);  
Set<String> keys = map.keySet();  
for (String key : keys)  
{  
   System.out.println("Name=" + key);  
   System.out.println("Value=" + map.get(key));  
}


метод взят http://www.coderanch.com/t/383310/java/java/parse-url-query-string-parameter

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)