2016-04-13 3 views
3

Невозможно разобрать параметры строки запроса url, имеющие #.Невозможно проанализировать параметры запроса с # url

http://www.example.com/txn/#/user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user 

URLEncodedUtils.parse возвращает нулевой результат.

Даже URL.getQuery() указывает значение null.

Любой метод для его синтаксического анализа с явным удалением # из url.

ответ

1

Все после # является фрагментом .

URL-адрес построен, как это (от Wikipedia):

scheme:[//[user:[email protected]]host[:port]][/]path[?query][#fragment] 

Ваш URL разлагается (с помощью URL, схема называется протокол и фрагмент называется исх):

scheme = http 
host  = www.example.com 
path  = txn/ 
query = 
fragment = /user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user 

Кроме того, если вы введете этот URL-адрес в веб-браузер фрагмент обрабатывается браузером и не отправляется на сервер.


Если вы действительно хотите # как компонент пути, он должен быть % закодированы:

http://www.example.com/txn/%23/user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user 

Это будет разлагаться (и декодирование) в:

scheme = http 
host  = www.example.com 
path  = txn/#/user/399AC2F1BB3241823B5E48205C0657FC 
query = utm_source=campaign&utm_medium=testmedium&page=user 
fragment = 

После того, как запрос был извлечен, вы можете использовать URLEncodedUtils.parse. parse не для всего URL.

Смежные вопросы