--创建存储过程,定义四个参数,入参:userid,code,name;出参:resmark
CREATE OR REPLACE PROCEDURE pro_test_ws(name in varchar2,resmark out varchar2) IS
--定义四个变量,http请求,http返回,请求报文,返回报文
http_req UTL_HTTP.REQ;
http_Resp UTL_HTTP.RESP;
request_env VARCHAR2(32767);
l_Replyline VARCHAR2(1000);
BEGIN
--开始pl/sql体
request_env := ‘
‘|| name ||‘
‘;
--打印请求报文
dbms_output.put_line(request_env);
--请求WS地址
http_req := UTL_HTTP.
begin_request(‘http://localhost:6060/cam/services/UserSync?wsdl‘,
‘POST‘,
UTL_HTTP.http_version_1_1);
--保持连接状态
Utl_Http.Set_Persistent_Conn_Support(http_req, TRUE);
--设置编码
Utl_Http.Set_Header(http_req, ‘Content-Type‘, ‘text/xml;charset=utf-8‘);
Utl_Http.Set_Header(http_req, ‘SOAPAction‘, ‘‘);
--设置字符集
Utl_Http.Set_Body_Charset(http_req, ‘utf-8‘);
--该参数代表我发送的POST报文多长,不可少
Utl_Http.Set_Header(http_req, ‘Content-Length‘, Lengthb(request_env));
Utl_Http.Write_Line(http_req, request_env);
--赋值http返回
http_Resp := Utl_Http.Get_Response(http_req);
--将请求报文赋值给 l_Replyline
Utl_Http.Read_Text(http_Resp, l_Replyline);
dbms_output.put_line(l_Replyline);
--付给存储过程出参
resmark:=l_Replyline;
END pro_test_ws;