AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.12.2012, 15:29   #1  
NetBus is offline
NetBus
Участник
 
200 / 85 (3) ++++
Регистрация: 08.07.2005
Адрес: Москва
проверка кириллических доменов
AX 2009

Проверка корректности введенного URL адреса (eng)
\Classes\Global\isValidURL
есть ли варианты проверки корректности кириллических доменов *.рф?
Старый 10.12.2012, 16:37   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
http://habrahabr.ru/post/123845/
Цитата:
URL на латинице. Если нужно распознавать и кириллические домены, необходимо изменить все «a-z0-9» на «а-яёa-z0-9» и добавить в список доменных зон «рф»
Старый 10.12.2012, 16:44   #3  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
S.Kuskov, все чуть-чуть не так. При проверке используеся функция IsWellFormedUriString. И "By default, the string is considered well-formed in accordance with RFC 2396 and RFC 2732. If International Resource Identifiers (IRIs) or Internationalized Domain Name (IDN) parsing is enabled, the string is considered well-formed in accordance with RFC 3986 and RFC 3987". То есть, вроде как, на самом деле функция уже умеет проверять кириллические (IDN) домены. Но by default эта возможность выключена.
http://msdn.microsoft.com/en-us/libr...uristring.aspx

Цитата:
Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Punycode names contain only ASCII characters and always start with the xn-- prefix. The reason for this is to support existing DNS servers on the Internet, since most DNS servers only support ASCII characters (see RFC 3940).
http://msdn.microsoft.com/ru-ru/libr...ewDropDownText
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 10.12.2012, 20:28   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от oip Посмотреть сообщение
При проверке используеся функция IsWellFormedUriString.
Это в какой версии?
Старый 10.12.2012, 21:08   #5  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Так в 2009 же.

X++:
ret = System.Uri::IsWellFormedUriString(url,System.UriKind::Absolute);
Старый 10.12.2012, 21:51   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ничего не понимаю. А это тогда что?
X++:
static client server boolean isValidURL(URL url)
{
    InteropPermission   permission;
    boolean             ret;
    str                 urlFilter;
    System.Text.RegularExpressions.Regex regEx;
    System.Text.RegularExpressions.Match regMatch;

    permission = new InteropPermission(InteropKind::ClrInterop);
    permission.assert();
    // The regular expression used to validate URL was taken from
    // [url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/paght000001.asp[/url]
    // and modfied slightly to allow URL's without the HTTP part.
    urlFilter = @"^(http(s?)\:\/\/)?[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&;%\$#_]*)?$";
    //BP Deviation documented
    regEx = new System.Text.RegularExpressions.Regex(urlFilter);
    regMatch = regEx.Match(url);
    ret = regMatch.get_Success();

    return ret;
}
Старый 10.12.2012, 22:37   #7  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Это в каком ролапе? Такая проверка с помощью RegularExpressions же была в 4ке, если я не путаю. Проверка корректности УРЛ - это же чуть больше, чем простая проверка регулярного выражения по маске.
X++:
static client server boolean isValidURL(URL url)
{
    InteropPermission   permission;
    boolean             ret;
    #define.HTTP("http")
    #define.HTTPS("https")
    #define.SLASH("://")
    ;

    permission = new InteropPermission(InteropKind::ClrInterop);
    permission.assert();

    if(strscan(url,#SLASH,1, strlen(url)))
    {
        if( substr(url,1,4) == #HTTP || substr(url,1,5) == #HTTPS)
            ret = System.Uri::IsWellFormedUriString(url,System.UriKind::Absolute);
    }
    else
    {
        url = #HTTP + #SLASH + url;
        ret = System.Uri::IsWellFormedUriString(url,System.UriKind::Absolute);
    }

    return ret;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проверка существования email-адреса в Active Directory через ADSI gl00mie DAX: Программирование 0 13.01.2012 15:19
Проверка ВР не заглядывает внутрь расширенных типов-массивов glibs DAX: Программирование 0 26.01.2010 20:16
Проверка на RecId monk DAX: Программирование 29 27.11.2008 13:37
Проверка целостности coja DAX: Администрирование 6 06.09.2006 13:14
Проверка цикличности в спецификации vey DAX: Функционал 2 24.03.2005 11:03

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:49.