Базы данных Oracle - статьи


Организация PL/SQL-процедуры для обработки запросов Web-браузера


PL/SQL-процедура использует приведенный выше XML-запрос к MapViewer, чтобы получить ссылку на изображение карты, подставив в него входные параметры размера карты и координаты центральной точки. Данная ссылка используется, чтобы сформировать HTML-документ и в дальнейшем будет использована браузером, чтобы запросить у Web-сервера файл изображения карты.

Ниже приводится фрагмент текста простой процедуры, содержащий ключевые моменты реализации -------------------------------------------------------------------------------------------- PROCEDURE map_view( map_size IN VARCHAR2 DEFAULT NULL, map_x IN VARCHAR2 DEFAULT NULL, map_y IN VARCHAR2 DEFAULT NULL, ) IS

size_par NUMBER; -- размер карты x_par NUMBER; -- координата X центра карты y_par NUMBER; -- координата Y центра карты delta_ NUMBER; -- величина инкремента/декремента смещения центра карты при навигации

l_http_req utl_http.req; l_url varchar2(4000); l_value varchar2(4000); img_url varchar2(4000); -- URL изображения response sys.xmltype; map_req varchar2(4000);

BEGIN

size_par := to_number(map_size); x_par := to_number(map_x); y_par := to_number(map_y); delta_ := round(size_par/3,2);

-- организация запроса к MapViewer l_url := 'http://hostserver:8888/mapviewer/omserver'; utl_http.set_persistent_conn_support(TRUE); map_req := '<?xml version="1.0" standalone="yes"?> <map_request datasource="ds_demo" basemap="map_demo" width="640" height="480" bgcolor="#FFFFFF" antialiasing="false" format="GIF_URL"> <center size="'map_size'" > <geoFeature> <geometricProperty>

<Point> <coordinates>'map_x','map_y'</coordinates> </Point> </geometricProperty> </geoFeature>

</center> </map_request>';

-- отправка запроса к MapViewer l_http_req := utl_http.begin_request(l_url, 'POST', 'HTTP/1.0');

utl_http.set_header(l_http_req, 'Content-Type','application/x-www-form-urlencoded'); utl_http.set_header(l_http_req, 'Content-Length', length('xml_request='map_req)); utl_http.set_header(l_http_req, 'Host', 'zemhp'); utl_http.set_header(l_http_req, 'Port', '8888'); utl_http.write_text(l_http_req, 'xml_request=' map_req);




Начало  Назад  Вперед



Книжный магазин