|
Программирование >> Oracle
1776 Приложение А 21 / The status was 200 The status text was HTTP/1.0 200 OK Content-Type: text/html Date: Fri, 02 Feb 2001 19:14:48 GMT Allow: GET, HEAD Server: Oracle Web listener2.1/1.20in2 Set-Cookie: COUNT=56; expires=Saturday, 03-Feb-2001 22:14:48 GMT <HTML> <HEAD> <TITLE>C is for Cookie</TITLE> </HEAD> <BODY> <HR> <IMG SRC= /ows-img/ows.gif > <H1>C is for Cookie</Hl> <HR> You have visited this page <STRONG>56</STRONG> times in the last 24 hours. Как видите, значение ключика, 55, б1ло передано, и сервер увеличил его до 56.3a-тем он вернул нам измененное значение вместе с датой его устаревания. Теперь вы увидите, как обращаться к странице, доступа к которой необходимо передать имя пользователя и пароль. Это делается так: ops$tkyte@DEV816> declare 2 l httpHeaders correlatedArray; 3 l status number; 4 l status txt varchar2(255); 5 l content clob; 6 begin 7 http pkg.set bas ic auth(tkyte, tiger, l httpheaders); 8 http pkg.get url 9 (http: myserver.acme.com:80/wa/intranets/owa/print user, 10 null, 11 l status, 12 l status txt, 13 l httpHeaders, 14 l content); 16 p(The status was l status); 17 p(The status text was l status txt); 18 print headers(l httpHeaders); 19 print clob(l content); 20 end; 21 / The status was 200 The status text was HTTP/1.0 200 OK Пакет UTL HTTP 1777 Content-Type: text/html Date: Fri, 02 Feb 2001 19:49:17 GMT Allow: GET, HEAD Server: Oracle Web listener2.1/1.20in2 remote user = tkyte В данном случае я просто настроил DAD (Database Access Descriptor - дескриптор доступа к базе данных), в котором имя пользователя/пароль для доступа не хранится. Это означает, что Web-сервер ожидает, что в запросе будет указано соответствующее имя пользователя и пароль. Я передал их процедуре, которая выдала значение переменной среды REMOTE USER (имя подключившегося удаленно пользователя) в PL/SQL. Наконец, я продемонстрирую передачу данных по методу POST. Снова воспользуемся адресом службы Yahoo. Служба Yahoo позволяет получить информацию о курсах акций в формате, пригодном для электронных таблиц. Поскольку список наименований акций (stock symbols), курсы которых вас могут заинтересовать, может оказаться весьма большим, эти данные стоит передавать методом POST. Вот пример, демонстрирующий получение несколько курсов акций со службы Yahoo по протоколу HTTP. Данные возвращаются в формате CSV (Comma Separated Values - значения через запятую), который легко проанализировать и загрузить, например, в таблицу: ops$tkyte@DEV816> declare 2 l httpHeaders correlatedArray; 3 l status number; 4 l status txt varchar2(2 55) ; 5 l content clob; 6 l post clob; 7 begin 8 http pkg.set post parameter(symbols,orcl IXID DJI SPC, 9 l post, TRUE) ; 10 http pkg.set post parameter(format, sl1dlt1c1ohgv, 11 l post, TRUE) ; 12 http pkg.set post parameter(ext, .csv, 13 l post, TRUE) ; 14 http pkg.post url(http: quote.yahoo.com/download/quotes.csv, 15 l post, 16 www-proxy, 17 l status, 18 l status txt, 19 l httpHeaders, 20 l content); 21 22 p(The status was l status); 23 p(The status text was l status txt); 24 print headers(l httpHeaders); 25 print clob(l content); 26 end; 2 7 / The status was 200 The status text was HTTP/1.0 200 OK 1778 Приложение А Date: Fri, 02 Feb 2001 19:49:18 GMT Cache-Control: private Connection: close Content-Type: application/octet-stream ORCL ,28.1875, 2/2/2001 , 2:34PM ,-1.875,29.93 75,30.0 62 5,28.0 62 5,26479100 IXID ,1620.60, 2/2/2001 , 2:49PM ,-45.21,1664.55,1667.46,1620.40,N/A DJI ,10899.33, 2/2/2001 , 2:49PM ,-84.30,10982.71,11022.78,10888.01,N/A SPC ,1355.17, 2/2/2001 , 2:49PM ,-18.30,1373.53,1376.16,1354.21,N/A Резюме В этом разделе мы рассмотрели использование стандартного пакета UTL HTTP. Вы увидели, как, подойдя творчески, можно использовать средства пакета UTL HTTP не только для получения данных с Web-серверов, но и для реализации в PL/SQL аналога команды HOST. C помощью нескольких строк кода мы обеспечили возможность посылки сообщений электронной почты в любой версии сервера Oracle, начиная с 7.3, с использованием пакетов UTL FILE и UTL HTTP. Затем мы выяснили, как использовать средства пакета UTL HTTP поверх протокола SSL - это недостаточно подробно описано в руководстве по стандартным пакетам, поставляемом корпорацией Oracle (да и вообще нигде толком не описано). Вы научились обращаться из PL/SQL-процедур к Web-сайтам, поддерживающим протокол SSL, используя средства Oracle Wallet Manager. Кроме того, вы узнали, как улучшить и без того хороший пакет. Если в разделе, посвященном пакету DBMS OBFUSCATION TOOLKIT, мы создали оболочку для более простого и гибкого использования стандартного пакета, то здесь мы полностью заново реализовали аналогичный пакет, предоставив дополнительные, ранее никак не поддерживаемые возможности. За это в нашей реализации пришлось пожертвовать поддержкой протокола SSL, но полученный пакет и так пригодится во многих случаях. Можно пойти дальше, и с помощью языка Java или внешних процедур на языке С добавить полную поддержку протокола SSL. Это можно сделать также с помощью множества общедоступных и выпускаемых сторонними производителями классов и библиотек.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |