Как получить строку символов из URL - PullRequest
0 голосов
/ 04 июня 2019

Чтобы получить строку символов из следующего URL

http://10.10.10.14:8082/RunReport.i4?reportUUID=9803f942-81fb-4d83-a509-f38233a2b9a7&primaryOrg=1&clientOrg=1

            String CurrentUrl = driver.getCurrentUrl();
            System.out.println(CurrentUrl);


           if (CurrentUrl != null) {
            String result = CurrentUrl.substring(CurrentUrl.indexOf("=") + 1, CurrentUrl.indexOf("&"));
            System.out.println(result);

            }

Ответы [ 2 ]

4 голосов
/ 04 июня 2019

Есть два способа подойти к этому:

  • Используйте сопоставление с текстовым шаблоном для извлечения строки между «reportUUID =» и последующим «&». Например, вы можете сделать это с Pattern и Matcher.

  • Используйте анализатор URL для анализа URL. Тогда либо

    • извлеките часть запроса и используйте String::split или сопоставление с шаблоном, чтобы извлечь нужный параметр запроса, или

    • использовать стороннюю библиотеку для выполнения этой работы. Некоторые примеры приведены в Анализ строки URI в коллекции имя-значение .

Второй подход лучше. Проблема с первым заключается в том, что существуют различные способы кодирования части запроса URL, которые могут мешать простому сопоставлению шаблонов. Парсер URL будет иметь дело с расшифровкой для вас.

1 голос
/ 04 июня 2019
public class Example {
    public static void main(String[] args) throws Exception {

    String url="http://10.10.10.14:8082/RunReport.i4?reportUUID=9803f942-81fb-4d83-a509-f38233a2b9a7&primaryOrg=1&clientOrg=1";         
        try {
             Map<String, String> values = getUrlValues(url);
             String reportUUID = values.get("reportUUID");
             String primaryOrg = values.get("primaryOrg");
             String clientOrg = values.get("clientOrg");
             System.out.println("reportUUID:: "+reportUUID);
             System.out.println("primaryOrg:: "+primaryOrg);
             System.out.println("clientOrg:: "+ clientOrg);
        } catch (Exception e) {
            System.out.println("Error"+e.getMessage());
        }       
    }

    private static Map<String, String> getUrlValues(String url) {
        int i = url.indexOf("?");
        Map<String, String> paramsMap = new HashMap<>();
        if (i > -1) {
            String searchURL = url.substring(url.indexOf("?") + 1);
            String params[] = searchURL.split("&");
            for (String param : params) {
                String temp[] = param.split("=");
                try {
                    paramsMap.put(temp[0], java.net.URLDecoder.decode(temp[1], "UTF-8"));
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return paramsMap;
    }

} попробуйте изменить и скопировать из стека через поток

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...