Как проверить на допустимый URL в Java?

Что состоит в том, чтобы проверить лучший способ, допустим ли URL в Java?

Если попробовано звонить new URL(urlString) и выгода a MalformedURLException, но это, кажется, довольно чем-либо, что начинается http://.

Я не обеспокоен установлением соединения, просто законность. Существует ли метод для этого? Аннотация в В спящем режиме Блок проверки допустимости? Я должен использовать regex?

Править: Некоторые примеры принятых URL http://*** и http://my favorite site!.

86
задан Nikhil 11 July 2012 в 12:49
поделиться

3 ответа

Возвращаемые значения являются полностью произвольными. Когда вы пишете программу, вы можете заставить ее вернуть любое значение, которое вы хотите. В PHP это можно сделать с помощью языковой конструкции exit :

<?php
exit(33);

Точный код статуса для определенной части программного обеспечения можно узнать на его документации (учитывая, что автор фактически задокументировал его). Тем не менее, существует общее согласие, что 0 означает «OK», а что-либо еще означает «была проблема», поэтому проверка по отношению к нулю, как правило, достаточно.

В вашем случае, похоже, вы пытаетесь выполнить несуществующую программу. PHP выполняет внешние программы через системную оболочку, так что значение, вероятно, будет получено из bash или какой-либо оболочки по умолчанию у вас есть. В Unix существует несколько кодов выхода со специальными значениями и 127 означает команда не найдена .

-121--1572252-

Для хранения экземпляров Zend_DbTable в статическом массиве в классе базовой модели использовался одноэлементный образец. Это уменьшает количество запросов БД до одного на запрос, что достаточно хорошо для меня, а также уменьшает количество объектов, которые необходимо создать.

Например:

protected $_dbTable;
protected $_table; //override the database table name in subclass

private static $_dbTableCache = array();

public function __construct()
{
    $this->_dbTable = $this->getDbTableInstance($this->_table);
}

protected function getDbTableInstance($tableName) {
    if (self::$_dbTableCache[$tableName] === null) {
        self::$_dbTableCache[$tableName] = new Zend_Db_Table($tableName);
    }
    return self::$_dbTableCache[$tableName];
}
-121--2644617-

Рекомендуется использовать класс Apache Commons Url Validator

UrlValidator urlValidator = new UrlValidator();
urlValidator.isValid("http://my favorite site!");

. Существует несколько свойств, которые можно задать для управления поведением этого класса. По умолчанию принимаются http , https и ftp .

94
ответ дан 24 November 2019 в 08:01
поделиться

Бесстыдный штекер: Простой инжектор работает в среде Medium Trust!

-121--4460218-

Используйте: b < имя _ класса >:: < имя _ функции >, если это = 0xDEADBEEF (btw: все экземпляры совместно используют адреса функций-членов)

-121--4903890-

Судя по исходному коду для URI , конструктор

public URL(URL context, String spec, URLStreamHandler handler)

выполняет больше проверки, чем другие конструкторы. Вы можете попробовать это, но YMMV.

3
ответ дан 24 November 2019 в 08:01
поделиться

пакет валидатора:

Кажется, есть хороший пакет от Yonatan Matalon под названием UrlUtil. Цитирую его API:

isValidWebPageAddress(java.lang.String address, boolean validateSyntax, 
                      boolean validateExistance) 
Checks if the given address is a valid web page address.

Подход Sun - проверка сетевого адреса

Java-сайт Sun предлагает попытку подключения в качестве решения для проверки URL.

Другие фрагменты кода regex:

Есть попытки проверки regex на сайте Oracle и weberdev.com.

2
ответ дан 24 November 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: