oracle使用utl_http包傳送post請求
使用plsq傳送post或get請求,開始傳送中文時有亂碼,網上搜了半天,終於找到解決辦法,關鍵點見紅色字型部分,記錄以備忘:
set serveroutput on;
exec dbms_output.enable(1000000000);
set escape '\'
DECLARE
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
value VARCHAR2(1024); -- URL to post to
v_url VARCHAR2(200) := 'http://ip:port/xxx';
-- Post Parameters
v_param VARCHAR2(500) := 'para1=xxx\?2=xxxx\?3=xxxx';
v_param_length NUMBER := LENGTHB(v_param);
BEGIN
-- Set up proxy servers if required
-- UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');
req := UTL_HTTP.BEGIN_REQUEST (url=> v_url, method => 'POST');
-- UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
UTL_HTTP.SET_BODY_CHARSET('UTF-8');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Type',
value => 'application/x-www-form-urlencoded');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Length',
value => v_param_length);
UTL_HTTP.WRITE_RAW (r => req,
data => UTL_RAW.CAST_TO_RAW(v_param));
resp := UTL_HTTP.GET_RESPONSE(req);
LOOP
UTL_HTTP.READ_LINE(resp, value, TRUE);
DBMS_OUTPUT.PUT_LINE(value);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
END;
/
set serveroutput on;
exec dbms_output.enable(1000000000);
set escape '\'
DECLARE
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
value VARCHAR2(1024); -- URL to post to
v_url VARCHAR2(200) := 'http://ip:port/xxx';
-- Post Parameters
v_param VARCHAR2(500) := 'para1=xxx\?2=xxxx\?3=xxxx';
v_param_length NUMBER := LENGTHB(v_param);
BEGIN
-- Set up proxy servers if required
-- UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');
req := UTL_HTTP.BEGIN_REQUEST (url=> v_url, method => 'POST');
-- UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');
UTL_HTTP.SET_BODY_CHARSET('UTF-8');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Type',
value => 'application/x-www-form-urlencoded');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Length',
value => v_param_length);
UTL_HTTP.WRITE_RAW (r => req,
data => UTL_RAW.CAST_TO_RAW(v_param));
resp := UTL_HTTP.GET_RESPONSE(req);
LOOP
UTL_HTTP.READ_LINE(resp, value, TRUE);
DBMS_OUTPUT.PUT_LINE(value);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
END;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10972173/viewspace-2085171/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Postman傳送Post請求Postman
- Java傳送Post請求Java
- 使用Postman傳送POST請求的指南Postman
- python傳送HTTP POST請求PythonHTTP
- postman(二):使用postman傳送get or post請求Postman
- java傳送GET和post請求Java
- linux用curl傳送post請求Linux
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- httprequest- post- get -傳送請求HTTP
- file_get_contents傳送post請求
- 以Raw的方式傳送POST請求
- curl 傳送 POST 請求的四種方式
- 【Postman】6 Postman 傳送post請求-Json格式PostmanJSON
- Golang:使用go-resty/resty傳送http請求get和postGolangRESTHTTP
- 『動善時』JMeter基礎 — 14、使用JMeter傳送Post請求JMeter
- cURL實現傳送Get和Post請求(PHP)PHP
- jmeter之傳送json資料的post請求JMeterJSON
- 『居善地』介面測試 — 5、使用Requests庫傳送POST請求
- axios傳送post請求,request.getParamter接收不到iOS
- 利用post請求傳送內容進行爬蟲爬蟲
- python+pytest介面自動化傳送post請求Python
- 使用Feign傳送HTTP請求HTTP
- scrapy-redis原始碼解讀之傳送POST請求Redis原始碼
- nodejs使用request傳送http請求NodeJSHTTP
- Java用HttpClient3傳送http/https協議get/post請求,傳送map,jsoJavaHTTPclient協議JS
- Vue 使用 Axios 傳送請求的請求體問題VueiOS
- Vue中通過Axios向SpringBoot傳送get和post請求VueiOSSpring Boot
- wireshark抓包curl傳送http2請求HTTP
- vue中使用axios傳送ajax請求VueiOS
- 首頁 使用axios 傳送ajax請求iOS
- 使用requests庫來傳送HTTP請求HTTP
- jQuery裡如何使用ajax傳送請求jQuery
- Android 傳送HTTP GET POST 請求以及通過 MultipartEntityBuilder 上傳檔案(二)AndroidHTTPUI
- nGrinder中快速編寫groovy指令碼04-傳送POST請求指令碼
- java apache commons HttpClient傳送get和post請求的學習整理JavaApacheHTTPclient
- Python開發技巧:scrapy-redis爬蟲如何傳送POST請求PythonRedis爬蟲
- java傳送http請求JavaHTTP
- 傳送GET請求 示例
- Go使用net/http庫傳送GET請求GoHTTP