2011-07-13 15 views
5

Czy istnieje odpowiednik fraza/grails odpowiadający parse_url PHP (http://php.net/manual/en/function.parse-url.php) lub urlparse Pythona (http://docs.python.org/library/urlparse.html), który przekształca ciąg adresu URL w strukturę zawierającą host, protokół, zapytanie, fragment, URI, itp.?Równoważnik parse_url w grails/groovy?

Pomyślałem, że może być w grails.org/doc/latest/api/org/codehaus/groovy/grails/web/util/WebUtils.html, ale nic nie widziałem. Nie sądzę, że HTTPBuilder lub inne narzędzia do mapowania są tym, czego potrzebuję.

Naprawdę chcę tylko wyciągnąć mapę ze ścieżki i queryString i poprawnie obsłużyć przypadki brzegowe (tablica paramertów /blah/fuzz?foo=bar&foo=baz, fragmenty /blah/fuzz?foo=bar#baz, zakodowane adresy URL przekierowań).

wiem, że mogę obsłużyć składnik ścieżki poprzez inteligentne wykorzystanie URLMapping np /blah/$code, ale im pozostało dekodowania bloku param ...

Dzięki

Odpowiedz

7

Jeśli dobrze rozumiem, czego naprawdę potrzebujesz to zwykły stary URI klasa:

new URI('http://google.com/?q=URL').query 
1

Rozszerzanie @Artur Nowak odpowiedź, być może trzeba będzie trochę więcej wysiłku, aby dostać to, czego chcesz. Oto przykład:

URI dbUri = new URI('http://google.com/?q=URL') 
def username = dbUri?.getUserInfo()?.split(":")?.getAt(0) 
def password = dbUri?.getUserInfo()?.split(":")?.getAt(1) 
def host = dbUri?.getHost() 
def databaseInstance = dbUri?.getPath() 
def url = "jdbc:mysql://" + host + databaseInstance