簡體   English   中英

如何解析或拆分Java中的URL地址?

[英]How to parse or split URL Address in Java?

如果我有 url 地址。

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

我可以獲取(或拆分)參數(避免硬編碼)嗎?

像這樣

https /// graph.facebook.com /// me/home /// {limit=25, sincse=1374196005}

使用 Android 的Uri類。 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");

對於純 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();
        }

    }

}

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")

內置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() 
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM