|
Программирование >> Oracle
Пакет UTL HTTP 1773 10 end; 11 / Теперь переходим к тесту: ops$tkyte@DEV816> begin 2 p(http pkg.request(http: myserver/)); 3 end; <HTML> <HEAD> <TITLE>Oracle Service Industries</TITLE> </HEAD> <FRAMESET COLS= 13 0,* border=0> <FRAME SRC= navtest.html NAME= sidebar frameborder=0> <FRAME SRC= folder home.html NAME= body frameborder= 0 marginheight= O marginwidth= O > </FRAMESET> </BODY> </HTML> ops$tkyte@DEV816> declare 2 pieces http pkg.html pieces; 3 begin 4 pieces := 5 http pkg.reest pieces(http: www.oracle.com, 6 proxy=>www-proxy1); 7 8 for i in 1 .. pieces.count loop 9 p(pieces(i)); 10 end loop; 11 end; 12 / <head> <title>Oracle Corporation</title> <meta http-equiv= Content-Type content= text/html; Представленные выше фрагменты показывают, что процедуры REQUEST и REQUEST PIECES в новом пакете работают так же, как и одноименные процедуры пакета UTL HTTP. Они функционально идентичны. Теперь будем вызывать функцию URLENCODE, преобразующую плохие символы в управляющие последовательности в адресах URL и данных, передаваемых с помощью метода POST: ops$tkyte@DEV816> select 2 http pkg.urlencode(A>C%{hello}\fadfasdfads~[abc]: = $+) 3 from dual; HTTP PKG.URLENCODE(A>C%{HELLO}\FADFASDFADS~[ABC]:=$+) A%3EC%2 5%7Bhello%7D%5Cfadfasdfads%7E%60%5Babc%5D%3A%3D%2 4%2B%2 7%22 1774 Приложение А Как видите, специальные символы > и % преобразованы, соответственно, в %3E и %25, а остальные символы, такие как в слове hello, оставлены без изменений. Это позволяет безопасно использовать в запросах HTTP специальные символы. Теперь проверим первую из новых процедур пакета для работы с адресами URL. Следующий вызов вернет начальную страницу Yahoo через промежуточный сервер, www-proxyl, (вам, конечно, придется подставить вместо него свой промежуточный сервер). Кроме того, мы будем просматривать возвращаемый статус HTTP: значение 200 свидетельствует об успешном выполнении. Мы также увидим заголовки HTTP, которые возвращает Yahoo. В них всегда присутствует значение mime-type - оно позволяет понять, какого рода данные можно ожидать. Наконец, мы выбираем и выдаем содержимое страницы: 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.get url(http: www.yahoo.com/, 8 www-proxyl, 9 l status, 10 l status txt, 11 l httpHeaders, 12 l content); 14 p(The status was l status); 15 p(The status text was l status txt); 16 print headers(l httpHeaders); 17 print clob(l content); 18 end; 19 / The status was 200 The status text was HTTP/1.0 2 00 OK Date: Fri, 02 Feb 200119:13:26 GMT Connection: close Content-Type: text/html <html><head><title>Yahoo!</title><base href=http: www.yahoo.com/><meta http-equiv= PICS-Label Попытаемся выполнить запрос HEAD к начальной странице Web-сайта издательства Wrox и посмотрим, что нам удастся выяснить: ops$tkyte@DEV816> declare 2 l httpHeaders correlatedArray; 3 l status number; 4 l status txt varchar2(255); 5 begin 6 http pkg.head url(http: www.wrox.com/, 7 www-proxyl, 8 l status, 9 l status txt. Пакет UTL HTTP 1775 10 l httpHeaders); 12 p(The status was l status); 13 p(The status text was l status txt); 14 print headers(l httpHeaders); 15 end; 16 / The status was 200 The status text was HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Fri, 02 Feb 2001 19:13:26 GMT Connection: Keep-Alive Content-Length: 1270 Content-Type: text/html Set-Cookie: ASPSESSIONIDQQQGGNQU=PNMNCIBACGKFLHGKLLBPEPMD; path=/ Cache-Control: private По этим заголовкам понятно, что сайт Wrox работает на платформе Windows и обслуживается сервером Microsoft IIS. Понятно также, что используется технология ASP (это видно по присланному ключику). Если бы мы выбрали соответствующую страницу, ее содержимое имело бы длину 1270 байт. Теперь хотелось бы проверить использование ключиков. Здесь я использую стандартную демонстрационную процедуру, входящую в состав OAS (Oracle Application Server - сервер приложений Oracle) и iAS (Oracles Internet Application Server - сервер Internet-приложений Oracle), cookiejar, показывающую, как использовать ключики в Web-процедуре на языке PL/SQL. Программа cookiejar берет значение ключика, если оно установлено, увеличивает на единицу и возвращает клиенту. Мы увидим, как это происходит, с помощью нашего пакета. Мы пошлем серверу значение 55, предполагая, что он вернет нам 56: 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.add a cookie(COUNT, 55, l httpHeaders); 8 http pkg.get url 9 (http: myserver.acme.com/wa/webdemo/owa/cookiejar, 10 null, 11 l status, 12 l status txt, 13 l httpHeaders, 14 l content); 15 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); 2 0 end;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |