2

特定の URL への投稿リクエストを行うオラクルの手順を書いています。この投稿リクエストでは、いくつかのフォーム変数を送信する必要があります。APIドキュメントでは、jquery + javascriptで例を挙げていると彼らは言っています。見る:

var variables = {
   username: "username", 
   password: "password"
};
var jsonString = JSON.stringify(variables);
jQuery.post(
    "https://sandbox.api.cso20.net/v1/jobapi/getApiKey.json", 
    {args: jsonString}, 
    function (data) {console.log(data);}
);

utl_http を使用して PL SQL で http リクエストを作成し、https のウォレットを設定する方法を知っています。しかし、現時点で設定した唯一のヘッダーは次のとおりです。

utl_http.set_header(r => l_req, name => 'User-Agent', value => 'Mozilla/4.0');

フォーム情報は何らかの方法で投稿と一緒に送信する必要があることを理解しています (ヘッダーまたは本文がわからない)。しかし、インターネット上で例を見つけることができないので、少し助けが必要です。私はこれを試しました:

p_param_value = 'args={"username":"user","password":"pass"}';
l_param_length := length(p_param_value);
utl_http.set_header(r       =>   l_req,
                    name    =>   'Content-Length',
                    value   =>   l_param_length);

utl_http.write_text (r      =>   l_req,
                     data   =>   p_param_value);

しかし、残念ながらそれはうまくいきません。どんな助けでも大歓迎です。

ケビン

4

1 に答える 1

4

utl_http documentationによると、 begin_requestで POST メソッドを指定する必要があります。

req := UTL_HTTP.BEGIN_REQUEST (url=>the_url, method=>'POST');
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  =>'  <length of data posted in bytes>');
UTL_HTTP.WRITE_TEXT (r      =>   req, 
                     data   =>   'p1 = value1&p2=value2...');
resp := UTL_HTTP.GET_RESPONSE (r => req);
于 2013-06-10T09:22:01.050 に答える