Ich möchte eine URL analysieren, um eine Sammlung der querystring-Parameter in Java zu erhalten. Um klar zu sein, muss ich eine gegebene URL (oder einen String-Wert eines URL-Objekts) analysieren, nicht die URL einer Servlet-Anfrage.
Es sieht so aus, als wäre die javax.servlet.http.HttpUtils.parseQueryString
-Methode die offensichtliche Wahl, aber sie ist veraltet.
Gibt es eine alternative Methode, die ich vermisse, oder wurde sie gerade ohne eine äquivalente Ersetzung / erweiterte Funktion veraltet?
Nun, da Sie erwähnen, dass die URL nicht von einer Servlet-Anfrage kommt, ist die richtige Antwort, wie üblich davon abhängig .
Das Problem mit dem Abfrageteil einer URL besteht darin, dass es keine klare Spezifikation darüber gibt, wie die Parameterduplizierung gehandhabt wird.
Betrachten Sie zum Beispiel eine URL wie diese:
%Vor%Was erwarten Sie als Wert für param1? der erste Wert, der letzte, ein Array? Das Problem ist, dass laut den Spezifikationen alle diese Antworten gültig sind und der Serveranbieter frei ist, eines dieser oder eines anderen zu unterstützen. Einige verwenden die param1 [] -Notation, um anzugeben, dass sie als ein Array behandelt werden muss, aber auch dies ist keine einheitliche Lösung.
Die "beste" Lösung besteht also darin, zu wissen, wie Ihre Zielparameter gehandhabt werden, und das Verhalten mit einer selbst erstellten Dienstprogrammklasse nachzuahmen.
Ich denke, die Idee ist, stattdessen die HttpServletRequest zu verwenden. Es gibt die Methoden getParameterMap (), getParameterNames () und getParameterValues () zum Starten.
Es gibt auch die getParameter (String paramname) -Methode, um den Wert einer bestimmten Methode zu erhalten.
Diese machen keinen Unterschied zwischen Querystring-Parametern und Form-Parametern, aber wenn Sie also nach einer Querystring suchen, dann hilft das wahrscheinlich nicht.
Soweit ich weiß, gibt es keinen.
Es sollte nicht zu schwierig sein, selbst einen zu schreiben. Der schwierigste Teil, würde ich mir vorstellen, wäre das Entschlüsseln des URL-Namens / der URLs (was wirklich nicht so schwer ist, wenn man darüber nachdenkt), und man kann java.net.URLDecoder#decodeURL(String,String)
dafür.
Tags und Links java parsing url query-string