Библиотека Java проверяет URL и удаляет параметры URL из строки - PullRequest
1 голос
/ 02 декабря 2011

Я ищу библиотеку Java для проверки URL и удаления определенных параметров.Порядок параметров не имеет значения.

Я использовал регулярное выражение, но это очень медленно.Этот метод вызывается много раз и должен быть быстрым.

1 Ответ

1 голос
/ 02 декабря 2011

Apache Commons Validator включает UrlValidator класс в commons-validator-1.3.1.jar. Следующий метод используется для проверки заданного локатора медиаресурсов (MRL) в VLCJ, который в основном является URL. Однако UrlValidator не работает для файлового URL (со схемой file://)

/**
 * Get a media resource locator (MRL) with the following valid conditions: 
 * <br/>(1) a non-URI file link
 * <br/>(2) a URI link with "file:" scheme  
 * <br/>(3) a URI link with non-"file:" scheme
 * <br/>  
 * @param mrl media resource locator (MRL)
 * @return valid MRL; otherwise return null
 */
private String validateMRL(final String mrl){
    String media = null;
    String newURI = mrl;
    URI uri = new File(mrl.trim()).toURI();
    try {
        String f = new File(mrl).getAbsolutePath();
        Outils.debugMessage("URI:" + f);
        if (FilenameUtils.equalsNormalized(newURI, f)){
            //this is a actual file link
            newURI = uri.toURL().toString();
            newURI = Outils.replaceAllString(newURI, "file:", "file://");
            Outils.debugMessage("NEW URI: " + newURI);
            media = newURI;
        }
        else if (!mrl.contains("file:")) {
            //this is not a file link or "file:" link
            if (mrl != null && mrl.length() > 0){

                String[] schemes = {"http", "https", "rtsp", "rtp", "udp", "mms", "mmsh"};

                UrlValidator urlValidator = new UrlValidator(schemes);

                if (urlValidator.isValid(newURI))
                    media = mrl.trim();
            }
        }
        else {
            media = mrl;
        }
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Outils.debugMessage("CURRENT: " + media);       
    return media;
}

Извините, что эта функция не выполняет разбор параметров (или я бы сказал "схемы"). Но это можно легко сделать с помощью replace() или substring()

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