你的位置:首页 > 数据库

[数据库]PL/SQL 访问网页(get or post方式)


在我们开发plsql程序的过程中,有时候难免要访问一些外部网站的数据。这个时候我们就要用到utl_http包。

 

使用utl_http包前需要注意的是,当前的用户下是否有访问外部网络的权限。

 

如下是自己总结的函数,欢迎大家交流学习。

get方式:

 1 function http_get(p_url in varchar2) return clob 2   is 3     http_req utl_http.req; 4     http_resp utl_http.resp; 5     l_raw raw(1024); 6     l_r clob; 7   begin 8     begin 9       http_req:=utl_http.begin_request(p_url,'GET');    10       http_resp := utl_http.get_response(http_req, TRUE);11       loop12         utl_http.read_raw(http_resp, l_raw,1024);13         l_r:=l_r||utl_raw.cast_to_varchar2(l_raw);14       end loop;15       utl_http.end_response(http_resp);16       exception17         when utl_http.end_of_body then18         utl_http.end_response(http_resp);19     end;20     return l_r;  21   end;

 

post方式:

 1 function http_post( 2       p_url in varchar2, 3       p_data in varchar2 --a=1&b=2... 4   ) return clob 5   is 6     http_req utl_http.req; 7     http_resp utl_http.resp; 8     l_raw raw(1024); 9     l_r clob;10   begin11     begin12       http_req:=utl_http.begin_request(p_url,'POST');13       utl_http.set_header(http_req,'Content-Type','application/x-www-form-urlencoded;charset=utf-8');  14       utl_http.set_header(http_req,'Content-Length',length(p_data));  15       utl_http.write_text(http_req,p_data);16       http_resp := utl_http.get_response(http_req, TRUE);17       loop18         utl_http.read_raw(http_resp, l_raw,1024);19         l_r:=l_r||utl_raw.cast_to_varchar2(l_raw);20       end loop;21       utl_http.end_response(http_resp);22       exception23         when utl_http.end_of_body then24         utl_http.end_response(http_resp);25     end;26     return l_r;  27   end;

 The END.