Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
DLL для доступа к онлайн-ресурсам
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 13, February, 2013 11:36

Предлагается небольшая динамическая библиотечка (DLL), подключаемая через &unifor('+8') и позволяющая организовать простейший доступ к онлайн-ресурсам по протоколу HTTP, в том числе проверять их доступность. Отличные от HTTP протоколы (например, HTTPS или FTP) не поддерживаются.

В ИОГУНБ данная DLL применяется для верификации адресов Интернет-ресурсов, указанных в подполе 951^i.

DLL содержит три экспортированные функции:

* HEAD — получение (служебного) заголовка страницы.
Пример: &uf('+8IrbiNet,Head,http:/ /ya.ru/')
Результат:
       HTTP/1.1 200 Ok
       Server: nginx
       Date: Wed, 13 Feb 2013 08:49:15 GMT
       Content-Type: text/html; charset=UTF-8
       Content-Length: 5024
       Connection: close
       Cache-Control: no-cache,no-store,max-age=0,must-revalidate
       Expires: Wed, 13 Feb 2013 08:49:16 GMT
       Last-Modified: Wed, 13 Feb 2013 08:49:16 GMT
       P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
       Set-Cookie: yandexuid=610067331360745356; Expires=Sat, 11-Feb-2023 08:49:15 GMT; Domain=.ya.ru; Path=/
       X-Frame-Options: DENY
       X-XRDS-Location: http:/ /openid.yandex.ru/server_xrds/

* PAGE — получение текста страницы с сервера в текстовом виде. Возвращается не более 10 тыс. первых байт страницы. Преобразование кодировок не производится (текст страницы возвращается «как есть»). К сожалению, данный метод непригоден для получения двоичных файлов, т. к. они могут содержать нулевые байты, воспринимаемые ИРБИС как признак окончания строки.
Пример: &uf('+8IrbiNet,Page,http:/ /gpntb.ru')
Результат (первые строки):
       <div class="custom" >
       </div>
       </div>
       <td bgcolor="#8c1300" ALIGN=LEFT width=200>
       <img src="/templates/gpntbsite/images/gpw_01.gif" width="196" height="128" ALIGN=LEFT alt="">
</TD><TD bgcolor="#8c1300" ALIGN=RIGHT width=791>
       <table border="0" WIDTH=791 cellpadding="0" cellspacing="0"><tr><td align=right><img src="/templates/gpntbsite/images/gpw_03.gif" width="212" height="128" alt=""><img src="/templates/gpntbsite/images/gpw_04.gif" width="279" height="128" alt=""></td></tr></table></td>
       </tr>
       </table>

* CODE — получение HTTP-кода ответа сервера. Коды, начинающиеся единицы или двойки, свидетельствуют об успешном доступе, остальные — о различных ошибках (в том числе и о недоступности сервера).
Пример: if '12' : &uf('+960*0.1#',&uf('+8IrbiNet,Code,http:/ /ya.ru/')) then 'ОК!' else 'Всё пропало!' fi

Возможно указание HTTP-прокси (без авторизации). Адрес прокси отделяется от запрашиваемого URL вертикальной чертой.
Пример: &uf('+8IrbiNet,Head,10.0.0.254:3128|http:/ /ya.ru/')

При любых ошибках возвращается пустая строка (из нуля символов).

DLL требует Microsoft.NET Framework 3.5 (можно скачать по адресу [www.microsoft.com]). NET Framework входит в стандартную поставку Windows 7/8 и Windows Server 2008 R2 и может быть установлен посредством апплета Панели управления "Включение компонентов Windows".

Инсталляция DLL заключается в копировании двух файлов — irbinet.dll и ExportDllAttribute.dll — в папку с irbis_server.exe и в папку с cirbisc_new_unicode.exe.

В прилагаемом архиве, кроме собственно исполняемого файла DLL, содержится проект для Microsoft Visual Studio 2008, который позволяет скомпилировать утилиту самостоятельно.

!!! Во всех примерах уберите пробел между слэшами в «http:/ /» (без пробела форматтер форума портил примеры).

Вложения: IrbiNet.zip (30KB)  


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.