web-dev-qa-db-fra.com

Comment analyser ou fractionner une adresse URL en Java?

Si j'ai l'adresse URL.

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

Puis-je obtenir (ou scinder) des paramètres (en évitant de coder en dur)?

Comme ça

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

14
ChangUZ

Utilisez la classe Uri d'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");
37
j__m

Comme mentionné, vous pouvez utiliser .split ().

Comme ça:

 String url = "http://stackoverflow.com/questions/thispost/";
 String[] separated = newurl.split("/");
 separated[0]; // = http:
 separated[1]; // = (nothing, i.e, empty string, `""`)
 separated[2]; // = stackoverflow.com
 separated[3]; // = questions
 separated[4]; // = thispost
7
LordMarty

Pour Java pur, je pense que ce code devrait fonctionner:

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

    }

}
1
Harry.Chen