在oracle的包里面调用delphi开发的一个webservice,第一次调用可以成功,然后就报错ORA-29532: Java 调用被未捕获的 Java 异常错误终止: HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: oracle.j2ee.ws.saaj.ContentTypeException: Not a valid SOAP Content-Type: text/html
必须要断开oracle然后重新连接才可以,但是其他的开发工具调用确正常。
同样的写法,调用java开发的webservice就没有问题。
关于oracle调用webservice的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 13193887977 2015-03-18 04:55关注
代码是这样的:
create or replace FUNCTION add_func1 (str1 IN VARCHAR2,
str2 IN VARCHAR2)
RETURN VARCHAR2
AS
service_ sys.utl_dbws.service;
call_ sys.utl_dbws.call;
service_qname sys.utl_dbws.qname;
port_qname sys.utl_dbws.qname;
operation_qname sys.utl_dbws.qname;
string_type_qname sys.utl_dbws.qname;
retx ANYDATA;
retx_string VARCHAR2(100);
retx_len number;
params sys.utl_dbws.ANYDATA_LIST;l_wsdl_url varchar2(32767);
l_namespace varchar2(32767);
l_service varchar2(32767);
l_port varchar2(32767);
l_operation varchar2(32767);
BEGIN
l_wsdl_url := 'http://192.168.4.130/card_ws1.dll/soap/Iws_1';
l_namespace := 'ws_1Intf-Iws_1';
l_service := 'Iws_1service';
l_port := 'Iws_1Port';
l_operation := 'check_card';service_qname := sys.utl_dbws.to_qname(l_namespace, l_service);
service_ := sys.utl_dbws.create_service(service_qname);
port_qname := sys.utl_dbws.to_qname(l_namespace, l_port);
operation_qname := sys.utl_dbws.to_qname(l_namespace, l_operation);
call_ := sys.utl_dbws.create_call(service_, port_qname, operation_qname);
sys.utl_dbws.set_target_endpoint_address(call_, l_wsdl_url);
sys.utl_dbws.set_property(call_, 'ENCODINGSTYLE_URI', 'http://schemas.xmlsoap.org/soap/encoding/');
sys.utl_dbws.set_property(call_, 'OPERATION_STYLE', 'rpc');
-- sys.utl_dbws.set_property(call_, 'SOAPACTION_URI', l_namespace || '#' || l_operation);
-- sys.utl_dbws.set_property(call_, 'SOAPACTION_USE', 'true');string_type_qname := sys.utl_dbws.to_qname('xsd', 'string');
sys.utl_dbws.add_parameter(call_, 'cardid', string_type_qname, 'ParameterMode.IN');
sys.utl_dbws.add_parameter(call_, 'hostname', string_type_qname, 'ParameterMode.IN');
sys.utl_dbws.set_return_type(call_, string_type_qname);
params(0) := ANYDATA.convertvarchar(str1);
params(1) := ANYDATA.convertvarchar(str2);
retx := sys.utl_dbws.invoke(call_, params);
sys.utl_dbws.release_call(call_handle => call_);
sys.utl_dbws.release_service(service_handle => service_);
retx_string := retx.accessvarchar2;
return ANYDATA.AccessVarchar2(retx);
END;解决 无用评论 打赏 举报
悬赏问题
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 关于大棚监测的pcb板设计
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)