DECLARE
  req    utl_http.req;
  resp   utl_http.resp;
  value VARCHAR2(1000);
BEGIN     
   req  := utl_http.begin_request('http://192.168.1.243:8888/test.asp'); 
   utl_http.set_authentication(req,'domain\1085034','645312', 'Basic', true);
   utl_http.set_header(req, 'Content-Type', 'text/html; charset=utf-8');
  resp := utl_http.get_response(req);
  LOOP
     utl_http.read_line(resp, value, TRUE);
     dbms_output.put_line(value);
  END LOOP;
  utl_http.end_response(resp);
EXCEPTION
   WHEN utl_http.end_of_body THEN
     utl_http.end_response(resp);
END; 因为公司局内部网站都是使用域验证的形式来控制访问权限的。也就是当utl_http访问内部网页面时,在不设置权限的情况下,会给出“您未被授權查看該頁”的提示。我使用了utl_http.set_authentication这个存储过程了,结果是一样的不行。任何意见帮助,我都感激。

解决方案 »

  1.   

    utl_http是oracle给的一个发送http请求的包,我只是想知道对于域验证时应该怎么用。
      

  2.   

    额。。我随便说两句 楼主莫见怪
    感觉这些业务性很强的东西为什么都要放在数据库中呢?放在应用程序中 如java .net 去验证不更好?数据库就是数据库 是用来存储检索数据的 应该尽量避免将业务性的东西放到里边
      

  3.   

    时机问题。读取指定页面,是为了返回html的邮件内容,作为整个发送邮件包中存储过程的一部分。如果把发送邮件的事件放于数据库的触发器的话,就有机会获得实时的效果,如果放在.net或者java里面,可能需要另写后台服务程序,使用定时监视数据变化的方式,来获取发送邮件的时机。当然,这个兄弟也是很有道理,因为oracle响应http Response的时候,有可能需要对表进行锁等待,否则可能运行逻辑错误。