Gibt es Apache-Dienstprogramm, die Query String und einige Codierung und Return-Map von Schlüssel, Wert [] URL decodiert?Abfrage Abfrage String mit HTTPclient zu extrahieren nameValuePairs
Antwort
Es ist veraltet, aber Sie können HttpUtils.parseQueryString verwenden.
Es ordnet Parameternamen Werten zu. Wenn der Parameter mehr als einmal angezeigt wird, ist der Wert ein Array.
EDIT: Die obige Methode ist veraltet, da Sie keine Zeichencodierung angeben können.
Das HttpClient-Projekt bei Apache hat die Klassen, die Sie benötigen, um dies zu erreichen.
Verwenden Sie URIUtil.decode(String data, String encoding), um die Abfragezeichenfolge zu decodieren.
Dann ParameterParser.parse(String query, char separator), um eine Liste von NameValuePair s zu erhalten. Sie können diese dann in Commons-Sammlungen MultiMap setzen, die durch den Parameternamen eingegeben werden. (Sie könnten eine reguläre Hash-Map verwenden, die jedoch mehr Code für die Verarbeitung mehrerer Werte pro Schlüssel benötigt.)
Was ist mit http://www.docjar.com/docs/api/org/apache/catalina/util/RequestUtil.html#parseParameters%28Map,%20byte,%20String%29? –
Ja, das wollte ich schreiben! :) – mdma
Aber, ich habe meine App nicht auf tomcat libs angewiesen, ist es sonst wo ausgesetzt? –
Wenn Sie eine 4.x-Version von HttpClient verwenden, sollten Sie URLEncodedUtils.parse()
verwenden. Es benötigt einen URI (oder String + Zeichensatz) und gibt eine Liste von NameValuePairs zurück.
Haben Sie eine Art von Codierung Problem mit Werten abgerufen über HttpServletRequest getParameter-Methode? – Powerlord
@Powerlord vielleicht ist er nicht in einer Servlet-Umgebung. –
@JaimeHablutzel [tag: tomcat] ist in den Tags. – Powerlord