53: END disable_debug;
54: */
55:
56: PROCEDURE write(
57: c IN OUT NOCOPY utl_tcp.connection,
58: value VARCHAR2 := NULL)
59: IS
60: b pls_integer;
61: l_debug_prefix VARCHAR2(30) := '';
59: IS
60: b pls_integer;
61: l_debug_prefix VARCHAR2(30) := '';
62: BEGIN
63: b := utl_tcp.write_line(c, value);
64: --enable_debug;
65: IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
66: hz_utility_v2pub.debug(p_message=>'The text line transmitted :'|| substrb(value,1,4000),
67: p_prefix =>l_debug_prefix,
70: --disable_debug;
71: END write;
72:
73: PROCEDURE write_header(
74: c IN OUT NOCOPY utl_tcp.connection,
75: name VARCHAR2,
76: value VARCHAR2)
77: IS
78: l_debug_prefix VARCHAR2(30) := '';
127: -- Gets an http-format response from the tcp socket and returns it into
128: -- resp. Non-http-formatted responses are returned into err_resp.
129: -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
130: -- hz_utility_v2pub
131: -- utl_tcp
132: -- MODIFICATION HISTORY
133: -- 03-27-2002 J. del Callar Added err_resp parameter to get non-http
134: -- error messages for inclusion in log.
135: --------------------------------------
133: -- 03-27-2002 J. del Callar Added err_resp parameter to get non-http
134: -- error messages for inclusion in log.
135: --------------------------------------
136: PROCEDURE get_response_from (
137: c in OUT NOCOPY utl_tcp.connection,
138: resp OUT NOCOPY VARCHAR2,
139: content_type OUT NOCOPY VARCHAR2,
140: err_resp OUT NOCOPY VARCHAR2
141: ) IS
151: p_prefix=>l_debug_prefix,
152: p_msg_level=>fnd_log.level_procedure);
153: END IF;
154: WHILE success LOOP
155: line := utl_tcp.get_line(c);
156: IF firstline THEN
157: IF line NOT LIKE '%HTTP%200%OK%' THEN
158: success := FALSE;
159: err_resp := line || utl_tcp.get_text(c, 32767-LENGTHB(line));
155: line := utl_tcp.get_line(c);
156: IF firstline THEN
157: IF line NOT LIKE '%HTTP%200%OK%' THEN
158: success := FALSE;
159: err_resp := line || utl_tcp.get_text(c, 32767-LENGTHB(line));
160: END IF;
161: firstline := FALSE;
162: ELSE
163: IF header THEN
160: END IF;
161: firstline := FALSE;
162: ELSE
163: IF header THEN
164: IF line = utl_tcp.crlf THEN
165: header := false;
166: ELSE
167: IF UPPER(line) LIKE 'CONTENT-TYPE:%' THEN
168: content_type := RTRIM(RTRIM(RTRIM(LTRIM(SUBSTRB(line,14))),fnd_global.local_chr(10)),fnd_global.local_chr(13));
190: END IF;
191:
192: --disable_debug;
193: EXCEPTION
194: WHEN utl_tcp.end_of_input THEN
195: IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
196: hz_utility_v2pub.debug(p_message=>'The response is :' || SUBSTRB(resp, 1, 4000),
197: p_prefix=>'ERROR',
198: p_msg_level=>fnd_log.level_error);
215: -- DESCRIPTION
216: -- Implements HTTP post functionality.
217: -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
218: -- hz_utility_v2pub
219: -- utl_tcp
220: -- MODIFICATION HISTORY
221: -- 07-22-2002 J. del Callar Added for backward compatibility.
222: --------------------------------------
223: PROCEDURE post(
262: -- DESCRIPTION
263: -- Implements HTTP post functionality.
264: -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
265: -- hz_utility_v2pub
266: -- utl_tcp
267: -- MODIFICATION HISTORY
268: -- 03-27-2002 J. del Callar Added err_resp parameter to get non-http
269: -- error messages for inclusion in log.
270: --------------------------------------
287: line VARCHAR2(32767);
288: firstline BOOLEAN := TRUE;
289: head BOOLEAN := TRUE;
290: success BOOLEAN := TRUE;
291: c utl_tcp.connection;
292: l_debug_prefix VARCHAR2(30) := '';
293: BEGIN
294: --enable_debug;
295: IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
297: p_prefix=>l_debug_prefix,
298: p_msg_level=>fnd_log.level_procedure);
299: END IF;
300: sethostpostpath(url, proxyserver,proxyport, host, port, path);
301: c := utl_tcp.open_connection(host,port);
302: write(c, 'POST '|| path||' HTTP/1.0');
303: write_header(c, 'Content-Type', content_type);
304: write_header(c, 'Content-Length', lengthb(doc));
305: write(c);
303: write_header(c, 'Content-Type', content_type);
304: write_header(c, 'Content-Length', lengthb(doc));
305: write(c);
306: write(c, doc);
307: utl_tcp.flush(c);
308: get_response_from(c, resp, resp_content_type, err_resp);
309: utl_tcp.close_connection(c);
310: -- Debug info.
311: IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
305: write(c);
306: write(c, doc);
307: utl_tcp.flush(c);
308: get_response_from(c, resp, resp_content_type, err_resp);
309: utl_tcp.close_connection(c);
310: -- Debug info.
311: IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
312: hz_utility_v2pub.debug(p_message=>'post (-)',
313: p_prefix=>l_debug_prefix,
316: --disable_debug;
317: EXCEPTION
318: WHEN OTHERS THEN
319: IF c.remote_host IS NOT NULL THEN
320: utl_tcp.close_connection(c);
321: END IF;
322: fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
323: fnd_message.set_token('ERROR' ,SQLERRM);
324: fnd_msg_pub.add;
331: -- DESCRIPTION
332: -- Implements HTTP post functionality.
333: -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
334: -- hz_utility_v2pub
335: -- utl_tcp
336: -- MODIFICATION HISTORY
337: -- 07-22-2002 J. del Callar Added for backward compatibility.
338: --------------------------------------
339: PROCEDURE get(
374: -- DESCRIPTION
375: -- Implements HTTP get functionality.
376: -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
377: -- hz_utility_v2pub
378: -- utl_tcp
379: -- MODIFICATION HISTORY
380: -- 03-27-2002 J. del Callar Added err_resp parameter to get non-http
381: -- error messages for inclusion in log.
382: --------------------------------------
394: port NUMBER := 80;
395: host VARCHAR2(400);
396: path VARCHAR2(400);
397: msg VARCHAR2(32767);
398: c utl_tcp.connection;
399: l_debug_prefix VARCHAR2(30) := '';
400: BEGIN
401: --enable_debug;
402: IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
404: p_prefix=>l_debug_prefix,
405: p_msg_level=>fnd_log.level_procedure);
406: END IF;
407: sethostpostpath( url, proxyserver, proxyport, host, port, port);
408: c := utl_tcp.open_connection(host, port);
409: write(c, 'GET '||path||' HTTP/1.0');
410: write(c);
411: utl_tcp.flush(c);
412: get_response_from(c, resp, resp_content_type, err_resp);
407: sethostpostpath( url, proxyserver, proxyport, host, port, port);
408: c := utl_tcp.open_connection(host, port);
409: write(c, 'GET '||path||' HTTP/1.0');
410: write(c);
411: utl_tcp.flush(c);
412: get_response_from(c, resp, resp_content_type, err_resp);
413: utl_tcp.close_connection(c);
414: IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
415: hz_utility_v2pub.debug(p_message=>'get (-)',
409: write(c, 'GET '||path||' HTTP/1.0');
410: write(c);
411: utl_tcp.flush(c);
412: get_response_from(c, resp, resp_content_type, err_resp);
413: utl_tcp.close_connection(c);
414: IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
415: hz_utility_v2pub.debug(p_message=>'get (-)',
416: p_prefix=>l_debug_prefix,
417: p_msg_level=>fnd_log.level_procedure);
419: --disable_debug;
420: EXCEPTION
421: WHEN OTHERS THEN
422: IF c.remote_host IS NOT NULL THEN
423: utl_tcp.close_connection(c);
424: END IF;
425: fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
426: fnd_message.set_token('ERROR' ,SQLERRM);
427: fnd_msg_pub.add;