【问题标题】:How to parse or split URL Address in Java?如何在 Java 中解析或拆分 URL 地址?
【发布时间】:2013-07-18 04:24:41
【问题描述】:

如果我有 url 地址。

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

我可以获取(或拆分)参数(避免硬编码)吗?

这样

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

【问题讨论】:

  • 你想在map中解析参数(limit,since)和它们的值吗?
  • 您可以使用 .split() 根据各种分隔符将它们拆分,例如 /? 。这就是你想要的吗?
  • @kevinhoo 地图对我有好处。还是 getParmKeys() 和 getParmKey(parmKey)?
  • 你可能正在寻找这个:stackoverflow.com/questions/1667278/…
  • @kevinhoo 是的,在询问之前,我找不到好的答案。

标签: java android facebook-graph-api


【解决方案1】:

使用 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");

【讨论】:

  • 这就是我想要的。要在低 api 级别(
  • (4.2.2 adroid.net.Uri.getQueryParameterNames() 方法)grepcode.com/file/repository.grepcode.com/java/ext/…
  • 这是正确的答案。每个对split() 说过任何话的人,包括我自己,都读得太快了。
  • @ChangUZ 仅供参考,grepcode 链接似乎无法正常工作。
【解决方案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】:

    在科特林中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多