Android

How to parse or split URL Address in Java?

Как разобрать или разделить 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.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

https://graph.facebook.com/me/home?limit = 25&since = 1374196005

import java.net.URI
import android.net.Uri
val uri = URI(viewEvent.qr)
val guid = Uri.parse(uri.fragment).getQueryParameter("c")
Ответ 4

Встроенный 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()
};
java android