首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用PLSQL发送HTTP请求

无论在前端还是在后端,发送HTTP请求都是一件稀松平常的事。

前端可以用jQuery的Ajax方法post、get等,后端语言也都有HTTP请求相关的库可以直接调用。

当时接到在Oracle中用PLSQL发HTTP请求的需求时,我是拒绝的。

但是不小心一查,Oracle还真的支持,PLSQL自带的UTL_HTTP包基本可以满足HTTP请求的所有需求。

代码放在下边,简单做了注释。为了方便取用,请访问我的GitHub:

https://github.com/kaifeiji

create or replace function fnHTTP_REQUEST(param varchar2,

content varchar2) return varchar2 as

/**

*@paramp_dataType返回值类型:json或者xml

*@returnjson或者xml

*/

l_request utl_http.req;

l_response utl_http.resp;

l_result varchar2(32767);

l_url varchar2(4000);

l_param varchar2(4000);

begin

begin

utl_http.set_response_error_check(false);

utl_http.set_body_charset('UTF-8');

--设置请求的地址

l_url:='http://127.0.0.1:8080/api/api_test.jsp';

--设置请求的路径

l_param:='param='||param||'&content='||UTL_URL.escape(content);

--设置用POST方式请求

l_request:=utl_http.begin_request(l_url,'POST');

--设置请求头部

utl_http.set_header(l_request,'Content-Type','application/x-www-form-urlencoded');

UTL_HTTP.SET_HEADER(l_request,'Content-Length',LENGTHB(l_param));

--raw方式写入参数,可以避免中文变乱码

UTL_HTTP.WRITE_RAW (l_request,UTL_RAW.CAST_TO_RAW(l_param));

--发送请求并获取返回结果

l_response := utl_http.get_response(l_request);

if l_response.status_code = 200 then

utl_http.read_text(l_response, l_result, length(l_result));

utl_http.end_response(l_response);

else--错误处理

l_result := '网络访问错误!';

utl_http.end_response(l_response);

end if;

exception--异常处理

when others then

dbms_output.put_line(sqlerrm);

dbms_output.put_line(dbms_utility.format_error_backtrace);

l_result := sqlerrm;

if l_response.status_code is not null then

utl_http.end_response(l_response);

end if;

end;

return l_result;

end;

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180826G0LB0Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券