2016-04-13 17 views
3

#のあるURLのクエリ文字列パラメータを解析できません。#urlでクエリパラメータを解析できません。

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

URLEncodedUtils.parse return zero result。

偶数URL.getQuery()はnullを返します。

URLから#を明示的に削除して解析する方法です。

答えて

1

#の後のすべてがフラグメントです。

URLは、この(Wikipediaから)のように構築されています:

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

あなたのURLはに分解する(URLを使用して、スキームプロトコルフラグメントREFと呼ばれると呼ばれている):

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全体ではありません。

関連する問題