当前位置: 首页 > 知识库问答 >
问题:

apex_web_service.make_rest_request POST有错误的json或返回ORA-06502数字或值错误

白彦
2023-03-14

我无法通过使用apex_web_service.make_rest_request()使用PLSQL使用e-verify/dhs获得成功的POST/身份验证/登录。我先在Apex中尝试,但得到了数值/值错误,然后切换到PLSQL进行调试。它使用JSON。顶点版本是4.2。我可以得到一个get to work,但这不使用header或parms。

    null

因此,我当然希望这段代码能够正常工作,但相反,我如何查看来自Oracle/Apex的请求,以便确认json是什么样子的(对于上面的#1)?谢了!

这里是代码。

      l_parm_names  apex_application_global.vc_arr2;  
      l_parm_values apex_application_global.vc_arr2;   
      l_resp_clob        clob;
      l_resp_length      integer;
      l_body_varchar2    varchar2(4000);
      l_body_clob        clob;
    begin  
      l_parm_names(1) := 'username';  
      l_parm_values(1) := 'user1234';  
      l_parm_names(2) := 'password';  
      l_parm_values(2) := 'pass1234';
      l_body_varchar2  := '{"username":"user1234","password":"pass1234"}';
      l_body_clob      := to_clob(l_body_varchar2);
      apex_web_service.g_request_headers.delete();
      apex_web_service.g_request_headers(1).name := 'Content-Type';  
      apex_web_service.g_request_headers(1).value := 'application/json';
      l_resp_clob := apex_web_service.make_rest_request(
         p_url => 'https://stage-everify*******login',  
         p_http_method => 'POST',
--         p_parm_name => apex_util.string_to_table('username:password'),
--         p_parm_value => apex_util.string_to_table('user1234:pass1234')
--         p_parm_name => l_parm_names,
--         p_parm_value => l_parm_values
         p_body => l_body_clob
         );   
       INSERT INTO ev_clob (body, resp, dte, note)
        VALUES (l_body_clob, l_resp_clob, SYSDATE, 'Stack Script 1');  commit;
    end;

共有1个答案

穆彬郁
2023-03-14

您需要以这种方式生成json

SET SERVEROUTPUT ON
DECLARE
  l_cursor SYS_REFCURSOR;
BEGIN

  OPEN l_cursor FOR
    SELECT e.empno AS "employee_number",
           e.ename AS "employee_name",
           e.deptno AS "department_number"
    FROM   emp e
    WHERE  rownum <= 2;

  APEX_JSON.initialize_clob_output;

  APEX_JSON.open_object;
  APEX_JSON.write('employees', l_cursor);
  APEX_JSON.close_object;

  DBMS_OUTPUT.put_line(APEX_JSON.get_clob_output);
  APEX_JSON.free_output;
END;
/

您可以在这里找到更多信息https://docs.oracle.com/cd/e59726_01/doc.50/e39149/apex_json.htm#AEAPI29737

BEGIN
  apex_json.open_object; -- {
  apex_json.open_object('obj'); -- "obj": {
  apex_json.write('obj-attr', 'value'); -- "obj-attr": "value"
  apex_json.close_all; -- }}
END;
 类似资料:
  • 我在执行触发器时遇到以下错误: 请说明问题的原因。 编辑 数据类型:

  • 我得到了 ORA-06502:PL/SQL:以下代码中出现数值或值错误:

  • 我实现了一个返回clob数据类型的函数,我希望在DBMS输出中打印结果。不幸的是,我得到了ORA-06502:PL/SQL:numeric或value错误,我认为这是由于dbms_output的大小造成的。 这是密码。 这里有一些东西可以帮助您理解这个问题 1)添加了以下内容来设置缓冲区的大小不受限制,但不起作用… 3)我可以通过执行以下操作来解决这个问题,但我认为这不是一个好的解决方案,因为它执

  • 有没有办法在mybatis结果映射中指定一个字符串最多应包含20个字符?或者如何设置精度,如数字(4,2)? 例如,我有一个如下所示的结果图: 我可以将int的位数限制为只有1,在浮点数上的“.”后面显示N个元素,或者将字符串大小限制为一定的数字吗? 我正在处理的视图具有以下列结构: 编辑1:每当我试图调用存储过程在此视图中添加新项时...我会得到这个错误: 我创建了一个用于测试的类,该类尝试调用

  • 在函数中,我在这一行上有ORA-06502错误: 我看这里没有任何转换问题/完全困惑/

  • 我有一小段代码,抓取一些数据并生成SQL语句,将它们插入Oracle数据库。然后通过Oracle服务器上的JDBC驱动程序执行这些操作。 我遇到的问题是,如果这些语句包含一个TO_BINARY_DOUBLE调用,它们总是对我失败,而不是对我团队中的任何人失败,他们应该和我有完全相同的驱动程序和环境,这是非常奇怪的。 错误是: 希望有人能给我提供一些线索,或者给我指出正确的方向,试着找到它。