PLSQL 调用 Webservice 的实例

这是为项目写的一个封装包,用来调用一个测试用的Webservice.中间出现一些问题:
1.总是报无法取得http 头Soapaction的值的错,后来搞了半天,加了这两句解决:
  Scott.Utl_Dbws.Set_Property(L_Call, 'SOAPACTION_USE', 'TRUE');
  Scott.Utl_Dbws.Set_Property(L_Call, 'SOAPACTION_URI', Pi_Soap_Url);

2.发现返回的XML数据存在乱码,导致用XMLTYPE.extract().getstringval()来解析XML时发生错误,这应该是Webservice设置的问题。目前正在解决。

3.封装包所需的这些参数,基本都可以在 http://xxxx?WSDL 这种地址的页面上找到。


Procedure Call_Webservice(Pi_Wsdl_Url       In Varchar2,
                            Pi_Namespace      In Varchar2,
                            Pi_Service_Name   In Varchar2,
                            Pi_Port_Name      In Varchar2,
                            Pi_Operation_Name In Varchar2,
                            Pi_Soap_Flag      In Varchar2,
                            Pi_Soap_Url       In Varchar2,
                            Pi_Parameter      In Varchar2,
                            Po_Result         Out Sys.Xmltype) Is
  
    L_Service        Scott.Utl_Dbws.Service;
    L_Call           Scott.Utl_Dbws.Call;
    L_Wsdl_Url       Varchar2(2000);
    L_Namespace      Varchar2(2000);
    L_Service_Name   Scott.Utl_Dbws.Qname;
    L_Port_Name      Scott.Utl_Dbws.Qname;
    L_Operation_Name Scott.Utl_Dbws.Qname;
    L_Xmltype_In     Sys.Xmltype;
    L_Xmltype_Out    Sys.Xmltype;
  
  Begin
    L_Wsdl_Url       := Pi_Wsdl_Url;
    L_Namespace      := Pi_Namespace;
    L_Service_Name   := Scott.Utl_Dbws.To_Qname(L_Namespace,
                                                Pi_Service_Name);
    L_Port_Name      := Scott.Utl_Dbws.To_Qname(L_Namespace, Pi_Port_Name);
    L_Operation_Name := Scott.Utl_Dbws.To_Qname(L_Namespace,
                                                Pi_Operation_Name);
  
    --create service
    L_Service := Scott.Utl_Dbws.Create_Service(Wsdl_Document_Location => Urifactory.Geturi(L_Wsdl_Url),
                                               Service_Name           => L_Service_Name);
  
    --call webservice                                             
    L_Call := Scott.Utl_Dbws.Create_Call(Service_Handle => L_Service,
                                         Port_Name      => Null,
                                         Operation_Name => L_Operation_Name);
  
    --setup http soap action
    If Pi_Soap_Flag = 'Y' Then
      Scott.Utl_Dbws.Set_Property(L_Call, 'SOAPACTION_USE', 'TRUE');
      Scott.Utl_Dbws.Set_Property(L_Call, 'SOAPACTION_URI', Pi_Soap_Url);
    End If;
  
    --send parameter
    L_Xmltype_In := Sys.Xmltype(Pi_Parameter);
  
    --receive feedback
    L_Xmltype_Out := Scott.Utl_Dbws.Invoke(L_Call, L_Xmltype_In);
  
    --return feedback
    Po_Result := L_Xmltype_Out;
  
  End Call_Webservice;

调用:
Declare
  Aa Sys.Xmltype;
Begin
  Cux_Common_Utilities_Pkg .Call_Webservice(Pi_Wsdl_Url       => 'http://www.jxsd999.com/WebService1.asmx?wsdl',
                                           Pi_Namespace      => 'http://tempuri.org/',
                                           Pi_Service_Name   => 'WebService1',
                                           Pi_Port_Name      => 'WebService1Soap',
                                           Pi_Operation_Name => 'SendSucess',
                                           Pi_Soap_Flag      => 'Y',
                                           Pi_Soap_Url       => 'http://tempuri.org/SendSucess',
                                           Pi_Parameter      => '<?xml version="1.0" encoding="utf-8"?>
                                                           
                                                             Welcome
                                                             Success
                                                           ',
                                           Po_Result         => Aa);
End;


最近发现,环境重装后,上面的封装包无法使用了,报错,尝试了N多次,换另外一种写法,可通过,下面是新的封装包
PROCEDURE call_webservice(pi_wsdl_url       IN VARCHAR2,
                            pi_namespace      IN VARCHAR2,
                            pi_service_name   IN VARCHAR2,
                            pi_port_name      IN VARCHAR2,
                            pi_operation_name IN VARCHAR2,
                            pi_soap_flag      IN VARCHAR2,
                            pi_soap_url       IN VARCHAR2,
                            pi_parameter      IN VARCHAR2,
                            po_result         OUT sys.xmltype) IS
  
    l_service        scott.utl_dbws.service;
    l_call           scott.utl_dbws.call;
    l_wsdl_url       VARCHAR2(2000);
    l_namespace      VARCHAR2(2000);
    l_service_name   scott.utl_dbws.qname;
    l_port_name      scott.utl_dbws.qname;
    l_operation_name scott.utl_dbws.qname;
    l_xmltype_in     sys.xmltype;
    l_xmltype_out    sys.xmltype;
  
  BEGIN
    l_wsdl_url       := pi_wsdl_url;
    l_namespace      := pi_namespace;
    l_service_name   := scott.utl_dbws.to_qname(l_namespace,
                                                pi_service_name);
    l_port_name      := scott.utl_dbws.to_qname(l_namespace, pi_port_name);
    l_operation_name := scott.utl_dbws.to_qname(l_namespace,
                                                pi_operation_name);
  
    --create service
    /*L_Service := Scott.Utl_Dbws.Create_Service(Wsdl_Document_Location => Urifactory.Geturi(L_Wsdl_Url),
    Service_Name           => L_Service_Name);*/
  
    --第二种方式
    l_service := scott.utl_dbws.create_service(service_name => l_service_name);
  
    --call webservice                                             
    /*L_Call := Scott.Utl_Dbws.Create_Call(Service_Handle => L_Service,
    Port_Name      => Null,
    Operation_Name => L_Operation_Name);*/
  
    --第二种方式
    l_call := scott.utl_dbws.create_call(service_handle => l_service);
  
  
    --设定地址
    scott.utl_dbws.set_target_endpoint_address(l_call, l_wsdl_url);
  
  
    --setup http soap action
    IF pi_soap_flag = 'Y' THEN
      scott.utl_dbws.set_property(l_call, 'SOAPACTION_USE', 'TRUE');
      scott.utl_dbws.set_property(l_call, 'SOAPACTION_URI', pi_soap_url);
    END IF;
  
    --send parameter
    l_xmltype_in := sys.xmltype(pi_parameter);
  
    --receive feedback
    l_xmltype_out := scott.utl_dbws.invoke(l_call, l_xmltype_in);
  
    --return feedback
    po_result := l_xmltype_out;
  
  END call_webservice;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10359218/viewspace-748202/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10359218/viewspace-748202/

OpenClaw 性能调优五步法 本文介绍了优化OpenClaw性能的五步方法,将响应时间从3秒降至300毫秒。首先建立性能基线,分析模型加载、上下文检索等主要瓶颈。五步优化包括:1)启用模型缓存减少60%延迟;2)优化记忆检索策略降低25%延迟;3)并行化工具调用节省40%时间;4)智能选择轻量级模型减少50%推理时间;5)启用流式输出改善70%感知延迟。最终整体性能提升10倍,并建议建立持续监控机制。这些优化方法经过实战验证,适用于不同规模的OpenClaw部署场景。 阅读详情

相关推荐

豆包大模型API调用两种方法

ps: 因为是自用,所以这里图方便采用硬编码密钥的形式;如果有需求/安全风险,建议参考官方教程设置ARK_API_KEY环境变量的方式。坏处是:看别人的教程走了一大圈弯路hh;基础调用的话方法一就可以满足了,也比较方便快捷,容易上手。将 <Model> 替换为 Endpoint ID即可。创建就按照提示填写信息就行,需要实名认证,有免费额度。绿框框里就是Endpoint ID。

kkkkkkkkkasey的博客 1万+

PLSQL调用webservice

  1.   用途简介 为什么要在Oracle中访问WebService?在系统实现中,有时会有直接在数据库端利用触发器、存储过程等方式进行数据传递、分发的业务,而其中可能会涉及一些业务逻辑,为了处理这些业务逻辑,并简单起见,可以直接在触发器或存储过程中调用一些java类或WebService。 2.   准备工作 1、首先保证Oracle为完全安装(本文均以10.2g); 2、下载...

weixin_33895516的博客 678

从零构建高精度温控系统:ADN8835的单电感拓扑与0.01℃稳定性实战解析

本文深入解析了如何利用ADN8835构建高精度温控系统,重点介绍了其创新的单电感拓扑架构如何实现0.01℃的长期稳定性。内容涵盖精密PCB布局、电源滤波设计,并详细阐述了针对不同热容负载的数字PID控制参数整定策略,为开发精密仪器和医疗设备提供了实战指南。

r2s3t4的博客 238

PLSQL 调用form-data格式的Webservice接口

PLSQL 调用form-data格式的Webservice接口

qq_43649830的博客 794

Ubuntu安装ToDesk远程控制软件

前几天有同学问我怎么在 Ubuntu 系统上安装 ToDesk 远程控制软件, 帮他安装完成后就 顺手整理了一下安装过程,所以就顺手有了这篇在 Ubuntu 系统上安装 todesk 的文章。

小白的博客 8659

数字设计实验:自动售货机

本文旨在介绍数字设计实验:自动售货机的设计思路和实现代码

2401_83740084的博客 2227

ORACLE PL/SQL调用WEBSERVICE多种方式详解

在使用PL/SQL访问HTTP网站时一般使用工具包UTL_HTTP调用webservice。 调用基于json数据传输的restful webservice 以文本方式传输request内容 l_rest_requst := utl_url.escape(p_requst_data, TRUE, ...

weixin_46130307的博客 2875

JS+H5打字练习器

实现功能 1.导入.TXT文件到打字练习内容(部分浏览器可能出于安全问题限制了这一步操作) 2.输入文本到打字练习内(弹出输入框,将要练习的内容输入至输入框) 3. 开始练习,并根据正误在打字练习内容文本上修改颜色(某个字正确显示绿色,某个字错误,显示红色,某个字没有打显示灰色) 4.开始练习、结束练习,全部输入完成后自动结束练习,也可提前手动结束练习,结束练习后弹窗用显示时和正确率。(区别在于一个全部输入完成且全部正确,一个提前结束无其他条件) 效果图 分析 HTML 结构解析 根元素:<!DO

w11111xxxl的博客 1413

plsql调用webservice(https协议基于soap数据协议)

本文章使用plsql的utl_http包调用webservice接口。本人入门级水平 写的不好 勿喷。调用 https接口 首先需设置oracle wallet钱包, 首先需要把网站证书添加到wallet钱包。1.下载网站证书(具体如何下载请百度)2.创建wallet    (1)创建钱包位置文件夹    $ mkdir -p /u01/app/oracle/admin/DB11G/wallet ...

kevin_virus的博客 5227

基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置

ProxmoxVE是一款套开源的虚拟化管理软件,用户可通过网页的方式来管理服务器上使用kvm以及lxc技术运行的虚拟机。同时提供了一些先进功能的支持,如集群、HA等。PVE虽然是开源,却是由一个商业公司在运营、更新以及维护。...

隔壁老瓦的专栏 6320

数据库系统工程师软考备战:第三篇 - SQL语言深入解析与应用

​​创建表​​​修改表​​​删除表​。

Programming Talk 122

从PL/SQL调用web services实例

web services是目前比较流行的系统之间信息交互的一种方式,近段研究了下通过Oracle数据库utl_http包调用web services,以下为例子,基于Oracle 11gr2测试。 此两种方式基本相似,只是在写法、调用上有些出入。涉及的web services服务器端代码较简单,采用axis2(v1.5.4)实现,可直接利用axis官方提供的例子。 附:web services

yehangchuan11的专栏 3702

PR工具timing report中setup time的计算过程

然后去pr工具里报告report_delay_calculation/reportDelayCalculation -from related_pin -to constraint_pin。这里constraint pin就是D pin (D0 D1 D2 D3),related pin就是 CK pin。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 455

plsql 调用java webservice接口服务

在开发过程中,涉及到多系统的部分数据交互,找了一些相关资料选定较为成熟的webservice,web可以实现不同平台、语言的交互,主要基于:HTTP+ XML(WSDL)方式。明细如下: 1、我们首先进行模拟一个服务端,进行端口发布(Java): @WebService public class WsServer { public static void main(S...

唯你_ 2446

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

EBS中PLSQL程序包发布成WEBSERVICE

问题描述: 如何将PLSQL程序包发布成WEBSERVICE 前提条件: 本文不涉及注册产品家族/产品/业务实体(Product Family/Product/BUSINESS ENTITY) 发布步骤: 1 编写PLSQL包头和包体,包头要添加特定的注释如下: /* $Header: cux_xxx_invws_pkg.pls 120.16.12010000.1 2016/12/07 11:...

weixin_46130307的博客 814

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

PLSQL中的使用utl_http来调用webservice

文章概要: KingbaseES提供的utl_http能够支持对webservice的调用,这也是该接口的最重要的应用方式之一。本文基于POST协议的方式展示了webservice接口的简单调用例子。 一,搭建环境 本文需要基于一个写好的webservice发布包,在windows的IIS管理器上部署。 首先需要下载一个webservice服务端的发布包,下载链接如下,这个包是使用visual ...

lyu1026的博客 1211

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

oracle plsql调用webservice

首先,轻描淡写的解释一下webservice,个人理解,webservice的出现并不是必须的,只是因为各个平台在设计之初只考虑自己的事情,不关注其他周围的可能会发生的事情,当然这种情况的发生和技术,历史有关,现在不是搞云计算了么。。。也许以后就不会用webservice这样的东西了。当然,万事都需要有时间阶段,现在还是有必要掌握,毕竟它是业界交换数据的一种标准。关于webservice还有很多,

hillday的专栏 7533

plsql查询oracle服务名,oracle plsql调用webservice

首先,轻描淡写的解释一下webservice,个人理解,webservice的出现并不是必须的,只是因为各个平台在设计之初只考虑自己的事情,不关注其他周围的可能会发生的事情,当然这种情况的发生和技术,历史有关,现在不是搞云计算了么。。。也许以后就不会用webservice这样的东西了。当然,万事都需要有时间阶段,现在还是有必要掌握,毕竟它是业界交换数据的一种标准。关于webservice还有很多,...

weixin_30438053的博客 483

更改由PLSQL发布的WEBSERVICE

问题描述: 我们把PLSQL程序包发布成WEBSERVICE后,有时需要更改发布的接口参数,例如添加一个参数或者改变参数类型,这时我们只更改程序包,重新部署后接口实际并未更改。 解决方法: 1 将接口程序包删除 2 以SYSADMIN账户登陆EBS 3 进入集成SOA网关职责 4 切换到REST Web服务TAB页面,点击取消部署按钮 5 服务取消后,还是在REST Web服务TAB页面,选中服务...

weixin_46130307的博客 483

Oracle EBS 通过PLSQL Package 方式发布WebService

编译保存后,cux_wz_connect_pkg.bdy另存为后缀名为plb的文件,或直接修改保存文件的后缀名为pls:cux_wz_connect_pkg.plb。编译保存后,cux_wz_connect_pkg.spc另存为后缀名为pls的文件,或直接修改保存文件的后缀名为pls:cux_wz_connect_pkg.pls。此处可以在公用块码中搜索lookup_type“BUSINESS_ENTITY”,将对应的信息维护进去,此处就会显示为自定义的meaning。将以上内容copy出来就可以测试了。

fhy920703的博客 2021

Oracle9i调用WebService

需要在Oracle9i中调用WebService,在网上搜到一片文章,带有如下实例代码:CREATE OR REPLACE FUNCTION WS_QUOTE( symbol in varchar2) RETURN sys.xmltypeas    env       VARCHAR2(32767);    http_req  utl_http.req;    http_resp utl_ht

kittylee9的专栏 1765

oracle plsql调用webservice

首先,轻描淡写的解释一下webservice,个人理解,webservice的出现并不是必须的,只是因为各个平台在设计之初只考虑自己的事情,不关注其他周围的可能会发生的事情,当然这种情况的发生和技术,历史有关,现在不是搞云计算了么。。。也许以后就不会用webservice这样的东西了。当然,万事都需要有时间阶段,现在还是有必要掌握,毕竟它是业界交换数据的一种标准。关于we...

风子杨的博客中心 1139

oracle调用web severs,PL/SQL调用WebService

现在已经调通了,代码如下:CREATE OR REPLACE PROCEDURE PRC_TEST_WEBSERVICE(p_i number,p_job_id number,p_monitor_id number,p_unit_id number,p_wsdl_url VARCHAR2)ASl_serviceUTL_DBWS.service;l_call UTL_DBWS.call;...

weixin_42355666的博客 316

jdev plsql webservice

最近一个项目要开发很多的webservice,项目时间又紧。 无意中看到了一个好玩的东西, 用oracle的jdev开发webservice。很简单,先开发一个package 然后用jdev新建一个app,里边就有一个plsqlwebservice。这样选择一下就把webservice开发完成了。觉得还是蛮好玩和简单的。 还没有具体的研究性能等其他问题。测试时候用。net去调用还是有点问题。不过这...

seadog 326

oracle plsql调用webservice 实例

1、WSDL描述文件 2、plsql过程 3、结果

风子杨的博客中心 1900

关于oracle中utl_http,Oracle使用utl_http访问webservice

PLSQL访问webservice, utl_dbws是个不错的选择,另外的一种方式是直接构造http请求访问。这里,使用了utl_http工具包,并使用了XMLTABLE+XPATH获取请求的结果。另外,普通数据库用户需要预先授权。代码如下:DECLAREreq utl_http.req;resp utl_http.resp;v_msg VARCHAR2(80);v_url ...

weixin_34566436的博客 1868
上一篇: R12 WEBADI - 关于 ADI security rules
下一篇: 通过ORG ID 取SOB ID(转)
ctrms66804
博客等级 码龄12年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值