Не могли бы вы поделиться ссылкой на реализацию парсинга URL? - PullRequest
11 голосов
/ 21 октября 2010

Насколько я понимаю, URL состоит из следующих полей:

  • Протокол (http, https, ftp и т. Д.)
  • Имя пользователя
  • Пароль пользователя
  • Адрес хоста (IP-адрес или полное доменное имя DNS)
  • Порт (который может подразумеваться)
  • Путь к документу внутри корня документов сервера
  • Набор аргументов и значений
  • Часть документа (#)

1021 * а *

protocol://user:password@host:port/path/document?arg1=val1&arg2=val2#part

Мне нужен код для получения значения (или пустого / пустого значения, если оно не установлено) любого из этих полей из любой заданной строки URL. Должен ли я реализовать это сам или уже есть код для этого, поэтому мне не нужно изобретать колесо?

Меня особенно интересует Scala или Java-код. Код на C #, PHP, Python или Perl также может быть полезен.

Ответы [ 6 ]

19 голосов
/ 21 октября 2010

Класс URL дает вам все необходимое. Смотри http://download.oracle.com/javase/6/docs/api/java/net/URL.html

URL url = new URL("protocol://user:password@host:port/path/document?arg1=val1&arg2=val2#part");
url.getProtocol();
url.getUserInfo();
url.getAuthority();
url.getHost();
url.getPort();
url.getPath(); // document part is contained within the path field
url.getQuery();
url.getRef(); // gets #part
8 голосов
/ 22 октября 2010

Используйте для этого класс java.net.URI. URL-адреса для реальных ресурсов и реальных протоколов. URI для возможных несуществующих протоколов и ресурсов.

3 голосов
/ 21 октября 2010

В Java просто используйте URL класс .Он предоставляет такие методы, как getProtocol, getHost и т. Д. Для получения различных частей URL.

0 голосов
/ 23 сентября 2015

На основе ответа @Codemwnci приведен полный пример получения filename от url с аргументами или без них:

URL videoUrl = new URL("https://somesite.com/path/v/t43.1792-2/1186696120_n.mp4?efg=something");
String videoFileName = videoUrl.getPath().substring(videoUrl.getPath().lastIndexOf("/") + 1);

1186696120_n.mp4

0 голосов
/ 31 января 2014

URL не поддерживает ldap по умолчанию. Можно расширять URL и добавлять протоколы, но в итоге я получил простой парсер и небольшой новый класс.

0 голосов
/ 27 октября 2010
...