13193887977 2015-03-18 04:52 采纳率: 0%
浏览 3594
已结题

关于oracle调用webservice的问题

在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就没有问题。

  • 写回答

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显示?(语言-开发语言)