以下是存盤程序:
入參:
<service xmlns="http://www.chinatax.gov.cn/spec/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<tran_id>DXPT.SEND.YZMSC</tran_id>
<channel_id>GXLT.ZJQDTOZJHD.QSSB.WWSC</channel_id>
<tran_seq>F9EFE6E0937304248BAF79AA7D53BACE</tran_seq>
<tran_date>20161204</tran_date>
<tran_time>032456481</tran_time>
<modeltype>local</modeltype>
<sjjg>24501030500</sjjg>
<sjry>24501002315</sjry>
</head>
<body>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?> <taxML> <iphone>123456789</iphone> </taxML>]]>
</body>
</service>
已經可以傳入寫好的XML 成功呼叫websevice 但是獲取回傳引數時 報錯:
ORA-29532: Java 呼叫被未捕獲的 Java 例外錯誤終止: HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: Bad Set-Cookie header: QSSB_SESSION=iww7Up_zxqnXfTTzpRHOgGTXwz9kdpzSn0sA9GUGHHoHz86U5H_E!991754633; path=/; HttpOnly
No '=' found for token starting at position 85
create or replace procedure P_DXPT_WEBSERVICE(xmlstring in varchar2,
a_success out varchar2,
a_message out varchar2) is
/*************************************************************************
date:2016-06-07
**************************************************************************/
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;
string_type_qname1 sys.utl_dbws.QNAME;
retx_string VARCHAR2(1000);
retx ANYDATA;
retx_len number;
aaa ANYDATA;
params sys.utl_dbws.ANYDATA_LIST;
begin
service_qname := sys.utl_dbws.to_qname(null, 'DXPT.SEND.YZMSC');
service_ := sys.utl_dbws.create_service(service_qname);
port_qname := sys.utl_dbws.to_qname(null, 'GXLT.ZJQDTOZJHD.QSSB.WWSC');
operation_qname := sys.utl_dbws.to_qname('http://webservice.comm.cssnj.com', 'processXTService');
call_ := sys.utl_dbws.create_call(service_, port_qname, operation_qname);
sys.utl_dbws.set_target_endpoint_address(call_, 'http://151.12.65.92:9006/services/XTWebService');
string_type_qname := sys.utl_dbws.to_qname('http://www.w3.org/2001/XMLSchema', 'string');
string_type_qname1 := sys.utl_dbws.to_qname('http://www.w3.org/2001/XMLSchema', 'string');
sys.utl_dbws.add_parameter(call_, 'strXML', string_type_qname, 'ParameterMode.IN');
sys.utl_dbws.set_return_type(call_,null);
params(0) := ANYDATA.convertvarchar(xmlstring);
retx:= sys.utl_dbws.invoke(call_, params);
retx_string := retx.accessvarchar2;
a_success := '1';
a_message := retx_string;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
a_success := 'http://151.12.65.92:9006/services/XTWebService';
a_message := TRIM(SQLERRM);
return;
end P_DXPT_WEBSERVICE;
uj5u.com熱心網友回復:
當前用戶是否擁有呼叫 sys.utl_dbws等包的權限?uj5u.com熱心網友回復:
是個好問題..................uj5u.com熱心網友回復:
有啊這個用戶是DBA權限
uj5u.com熱心網友回復:
幫頂
uj5u.com熱心網友回復:
自己頂一下1uj5u.com熱心網友回復:
HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAP
從錯誤上看,還是與權限有關。樓主找找 dbms_java.grant_permission相關的資料,看是否有幫助
uj5u.com熱心網友回復:
用 utl_http 更簡單些, UTL_DBWS 我用了跟你一樣的報錯結果(注:做過授權)begin
dbms_java.grant_permission( 'USERNAME', 'SYS:java.lang.RuntimePermission', 'getClassLoader', '' );
--dbms_java.grant_permission( 'USERNAME','SYS:java.lang.IllegalAccessException','getClassLoader', '' );
dbms_java.grant_permission( 'USERNAME', 'SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar', '' );
dbms_java.grant_permission( 'USERNAME', 'SYS:java.lang.RuntimePermission', 'setFactory', '' );
dbms_java.grant_permission( 'USERNAME', 'SYS:java.util.PropertyPermission', 'HTTPClient.socket.idleTimeout', 'write' );
dbms_java.grant_permission( 'USERNAME', 'SYS:java.net.SocketPermission', 'localhost', 'resolve' );
dbms_java.grant_permission( 'USERNAME', 'SYS:java.net.SocketPermission', 'sms.sflep.com', 'connect,resolve' );
dbms_java.grant_permission( 'USERNAME', 'SYS:java.lang.RuntimePermission', 'createClassLoader', '' );
end;
/
沒作用的。還是utl_http簡單明了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/90801.html
標籤:開發
上一篇:oracle 中 用什么 替換 mysql中 regexp 運算式
下一篇:求助:如何顯示回傳的結果集?
