zoukankan      html  css  js  c++  java
  • 使用oracle utl_http包需要注意的事项

    总结下几次使用utl_http包遇到的几个问题

    关于utl_http包功能还是很强大的 可以通过他来捕捉网站页面的内容 或者调用一个url的接口完成某项功能
    Eg:
    declare
      req  UTL_HTTP.REQ;
      resp UTL_HTTP.RESP;
      v_text varchar2(4000);
    begin
      --here you can insert other code even procedure or funciton
      --my codeing is etl monitor
      v_text := etl_monitor; --this is the etl monitor procedure
      if v_text is not null then
      req  := UTL_HTTP.BEGIN_REQUEST('http://192.168.xxx.xxx/pass/web/alertsms.php?data=' ||
                                     v_text);
      resp := UTL_HTTP.GET_RESPONSE(req);
      utl_http.end_response(resp);
      end if;
     
    EXCEPTION
      WHEN utl_http.end_of_body THEN
        utl_http.end_response(resp);
    end;
    使用它来发送短信(告警) 注意这里可以再嵌套其他代码甚至是过程或函数
    今天在调试上述代码时总是抛出:
    declare
    *
    ERROR at line 1:
    ORA-29273: HTTP request failed
    ORA-06512: at "SYS.UTL_HTTP", line 1231
    ORA-29263: HTTP protocol error
    ORA-06512: at line 11
    这个错误 测试半天发现是v_text文本内容中含有空格 是调用的接口程序不允许含有空格字符~汗!
     
    第二个 关于有时中文乱码:
    declare
      req  UTL_HTTP.REQ;
      resp UTL_HTTP.RESP;
      val  varchar2(32767);
    begin
     
      req := UTL_HTTP.BEGIN_REQUEST('xxx');
      utl_http.set_header(req, 'Content-Type', 'text/html; charset=utf-8');--add this
      resp := UTL_HTTP.GET_RESPONSE(req);
      utl_http.read_line(resp, val, true);
      utl_http.end_response(resp);
      dbms_output.put_line(val);
     
    EXCEPTION
      WHEN utl_http.end_of_body THEN
        utl_http.end_response(resp);
    end;
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/5992282.html
Copyright © 2011-2022 走看看