Как разобрать или разделить URL-адрес в Java?
Если у меня есть URL-адрес.
https://graph.facebook.com/me/home?limit = 25&since = 1374196005
Могу ли я получить (или разделить) параметры (избегая жесткого кодирования)?
Вот так
https /// graph.facebook.com /// я /home /// {limit=25, sincse=1374196005}
Переведено автоматически
Ответ 1
Используйте Uri класс Android. http://developer.android.com/reference/android/net/Uri.html
Uri
Uri uri = Uri.parse("https://graph.facebook.com/me/home?limit=25&since=1374196005");String protocol = uri.getScheme();String server = uri.getAuthority();String path = uri.getPath();Set<String> args = uri.getQueryParameterNames();String limit = uri.getQueryParameter("limit");
Ответ 2
Для чистой Java, я думаю, этот код должен работать:
import java.net.URL;import java.net.URLDecoder;import java.util.HashMap;import java.util.Map;public class UrlTest { public static void main(String[] args) { try { String s = "https://graph.facebook.com/me/home?limit=25&since=1374196005"; URL url = new URL(s); String query = url.getQuery(); Map<String, String> data = new HashMap<String, String>(); for (String q : query.split("&")) { String[] qa = q.split("="); String name = URLDecoder.decode(qa[0]); String value = ""; if (qa.length == 2) { value = URLDecoder.decode(qa[1]); } data.put(name, value); } System.out.println(data); } catch (Exception e) { e.printStackTrace(); } }}
Ответ 3
В kotlin
import java.net.URIimport android.net.Uri
val uri = URI(viewEvent.qr)val guid = Uri.parse(uri.fragment).getQueryParameter("c")
Ответ 4
Встроенный java.net.URL должен работать.
java.net.URL
URL url = new URL("https://graph.facebook.com/me/home?limit=25&since=1374196005");String[] parts = { url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef() };