Программирование >>  Oracle 

1 ... 444 445 446 [ 447 ] 448 449 450 ... 469


1764

Приложение А


Выберите эту опцию, и появится следующее диалоговое окно; нажмите Select для выбора файла, содержащего сертификат.


Используйте появляющееся стандартное диалоговое окно выбора файла для выбора только что сохраненного сертификата. В результате на экране вы должны получить примерно следующее:


Теперь сохраните бумажник, щелкнув на соответствующей пиктограмме (желтая дискета) и попробуйте повторно выполнить пример:

tkyte@TKYTE816> declare 2 l output long;



Пакет UTL HTTP 1765

4 l url varchar2(255) default

5 https: trading.etrade.com/cgi-bin/gx.cgi/AppLogic%2bHome;

7 l wallet path varchar2(255) default

8 file:C:\Documents and Settings\Thomas Kyte\ORACLE\WALLETS; 9

11 begin

12 l output := utl http.request

13 (url => l url,

14 proxy => www-proxy.us.oracle.com,

15 wallet path => l wallet path,

16 wallet password => oracle

17 );

18 dbms output.put line(trim(substr(l output,1,255)));

19 end;

20 /

<HTML> <HEAD>

<META http-equiv= Content-Type content= text/html;

charset=ISO-8859-l >

<TITLE>E*TRADE</TITLE>

<SCRIPT LANGUAGE= Javascript

TYPE= text/javascript > <! -function mac comment(){ var

agt=navigator.userAgent.toLowerCase(); var is mac

PL/SQL procedure successfully completed.

На этот раз все получилось. Теперь вы знаете, как использовать и формировать бумажник Oracle для работы по безопасному протоколу HTTPS.

Реальное использование пакета UTL HTTP

Итак, что еще можно сделать с помощью пакета UTL HTTP, кроме получения содержимого Web-страницы? Обычно его также используют, чтобы добиться возможности выполнения внешней программы из PL/SQL - как своего рода команды HOST. Поскольку практически любой Web-сервер может выполнять cgi-программы, а пакету UTL HTTP можно передавать адреса URL, можно обеспечить выполнение команд операционной системы из программ на языке PL/SQL, сконфигурировав соответствующие команды для выполнения как cgi-программы на Web-сервере.

Я хочу настроить Web-сервер на IP-адресе 127.0.0.1 - интерфейсе закольцовыва-ния TCP/IP. Этот IP-адрес доступен только после физической регистрации на машине, где работает Web-сервер. Таким образом, я смогу создать cgi-программы для моих PL/ SQL-программ, которые никто другой выполнить не сможет, если только не взломает сервер - тогда у меня все равно будут серьезные проблемы.



1766

Приложение А

Раньше я использовал этот метод для отправки сообщений электронной почты из PL/ SQL-процедур. Предположим, имеется сервер Oracle 8i без поддержки языка Java. Значит, нельзя использовать пакеты UTL TCP и UTL SMTP - оба они предполагают поддержку Java в базе данных. Итак, если нельзя использовать пакеты UTL SMTP и/ или UTL TCP, как послать сообщение по электронной почте? С помощью пакетов UTL HP и UTL FILE можно создать cgi-программу, которая будет получать один параметр через переменную среды QUERY STRING. Этот параметр будет представлять собой имя файла. Далее мы используем программу /usr/lib/sendmail для пос]лки этого файла (в среде Windows можно использовать для отправки электронной почты общедоступную утилиту blat, которую можно найти по адресу http: www.interiog.com/~tcharron/ blat.html). После необходимых настроек можно будет выполнить хост-команду с помощью вызова:

results := utl http.request(

http: 127.0.0.l/cgi-bin/smail?filename.text);

Созданная cgi-программа smail будет возвращать Web-страницу, показывающую результат посылки. Я проанализирую содержимое переменной results, чтобы узнать, успешно ли отправлено сообщение. Полная реализация всего этого в ОС Unix может иметь

вид:

scott@ORA8I.WOKLD> create sequence sm seq 2 /

Sequence created.

scott@ORA8I.WORLD> create or replace procedure sm(p to in varchar2.

3 4 5

10 11

13 14 15 16

17 18 19 20 21

p from in p subject p body in

varchar2, in varchar2 , varchar2)

utl file.file type;

varchar2(255); varchar2(2000);

l output l filename l request begin

select m sm seq.nextval into l filename from dual;

.EMAIL. p to

l output :=

(/tmp ,

utl file.fopen

l filename.

w, 32000);

utl file.put line(l output, From: utl file.put line(l output, Subject:

utl file.new line(l output);

utl file.put line(l output, p body) ;

utl file.new line(l output); utl file.put line(l output, .) ;

utl file.fclose(l output);

p from) ;

p subject);



1 ... 444 445 446 [ 447 ] 448 449 450 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика