使用utl_http获得400,错误的请求

时间:2018-07-12 12:56:36

标签: oracle post plsql

我刚刚开始使用utl_http,所以请多多包涵。 我正在尝试开发一个使用utl_http进行发布的PL / SQL程序。
我从互联网上获取了大部分代码,并插入了自己的价值观。 我正在尝试进行POST,并且收到错误的请求返回。 下面是我的代码。关于如何纠正它的任何建议,以及 有关如何调试这些类型的程序的任何提示。错误的请求是 相当笼统的消息,并且不会向您指出错误的任何实际方向。谢谢。

================================================ ================================

clear screen;
set serveroutput on size unlimited;

declare 

  req utl_http.req;
  res utl_http.resp;
  ctx utl_http.request_context_key;

  url       varchar2(1024);
  name      varchar2(1024);
  value     varchar2(1024); 
  text      varchar2(32767);
  json_data varchar2(1024);

begin

  url := 'https://test.test.edu/bancas/api/users/add';

  json_data := ' "uid" : "cjones","passwd" : "nullnullnullnull","domain" :         "NULL", "disabled" : "false","expired" : "false" '; 

  ctx := utl_http.create_request_context( 
        wallet_path => 'file:/aa/app/oracle/product/12.1.0/db_1/xyz/wallet_file', 
        wallet_password => 'walletpassword',
        enable_cookies => TRUE,
        max_cookies => 100, 
        max_cookies_per_site => 10);

  req := utl_http.begin_request(url, 'POST',' HTTP/1.1', ctx);

  utl_http.set_header(req, 'user-agent', 'mozilla/4.0');
  utl_http.set_header(req, 'content-type', 'applicaton/json');
  utl_http.set_header(req, 'Content-Length', length(json_data));
  utl_http.set_authentication(req, 'myuser', 'mypasswd', 'Basic');


  utl_http.write_text(req, json_data);
  res := utl_http.get_response(req);

  if (res.status_code != utl_http.http_ok) then  
    dbms_output.put_line('res := utl_http.get_response(req) command ' || res.status_code);
    dbms_output.put_line('HTTP response status code   : ' || res.status_code);
    dbms_output.put_line('HTTP response reason phrase : ' || res.reason_phrase);
    dbms_output.put_line('HTTP response version       : ' || res.http_version);
    utl_http.end_response(res);
  end if;

  utl_http.end_response(res);
  utl_http.destroy_request_context(ctx);
end;
/

`

0 个答案:

没有答案