To start an ipp printer use
RESUME_PRINTER constant raw2) := '0011';
function process_request(operation in raw,
uri in ipp_attr,
attributes in ipp_attributes := null,
data in clob := null) return integer is
req Utl_Http.Req;
resp Utl_Http.Resp;
ipp_request raw(2000);
ipp_response raw(32000);
result integer;
i pls_integer;
BEGINUtl_Http.Set_Response_Error_Check(enable => true);
ipp_request := ipp_request_header(operation, uri, attributes);req := Utl_Http.Begin_Request(url => utl_raw.cast_to_varchar2(uri.val), method => 'POST');Utl_Http.set_authentication(req,username,password);
Utl_Http.Set_Header(r => req, name => 'Content-Type', value => 'application/ipp');
Utl_Http.Set_Header(r => req,
name => 'Content-Length',
value => to_char(utl_raw.length(ipp_request) + nvl(length(data), 0)));
Utl_Http.Write_raw(req, ipp_request);
-- write out data in chunks
i := 1;
loop
exit when data is null or(i > length(data));
Utl_Http.Write_Text(req, substr(data, i, 4000));
i := i + 4000;
end loop;
resp := Utl_Http.Get_Response(r => req);
utl_http.read_raw(r => resp, data => ipp_response);Utl_Http.End_Response(r => resp);
result := parse_response(ipp_response);
return result;
END;