POST-запрос, возвращающий неверный ответ на запрос APEX_WEB_SERVICE - PullRequest
0 голосов
/ 28 октября 2019

Я тестирую запросы GET и POST с сайта reqres.in, чтобы ознакомиться с API APEX_WEB_SERVICE. Во время тестирования метода POST я получаю ответ, который не соответствует ожидаемому результату. я правильно отправляю параметры?

Пример запроса и ответа, как показано ниже

**Request**

    {
        "name": "morpheus",
        "job": "leader"
    }

**Response**


    {
        "name": "morpheus",
        "job": "leader",
        "id": "517",
        "createdAt": "2019-10-28T15:46:26.025Z"
    }

код, который я использую для вызова веб-службы.

DECLARE
  l_response CLOB;
  l_url VARCHAR2(250) := 'https://reqres.in/api/users';
BEGIN
  --apex_web_service.g_request_headers(1).name := 'Content-Type';
  --apex_web_service.g_request_headers(1).value := 'application/json';

  l_response:=apex_web_service.make_rest_request
    ( p_url => l_url,
      p_http_method => 'POST',
      p_wallet_path => 'file:C:\app\db_home\bin\ow\wallets', --neded for https acccess
      p_wallet_pwd => 'walletPass',
      p_parm_name => apex_util.string_to_table('name:job'),
      p_parm_value => apex_util.string_to_table('"morpheus":"leader"')
    );

  DBMS_OUTPUT.PUT_LINE(l_response);

END;

Я получаю ответ, но он не совпадает сожидается ожидаемый ответ.

 - Response I am getting



     {
            "id": "547",
            "createdAt": "2019-10-28T15:45:45.333Z"
        }

 - Response shown at reqres.in



     {
            "name": "morpheus",
            "job": "leader",
            "id": "517",
            "createdAt": "2019-10-28T15:46:26.025Z"
        }

Обновлено: когда я использую Postman для тестирования API, когда я устанавливаю параметры в разделе тела, я получаю ожидаемый ответ. см. ниже

enter image description here

1 Ответ

0 голосов
/ 28 октября 2019

Как оказалось, я неправильно проходил мимо тела. код ниже работает и отправляет ответ, как и ожидалось.

DECLARE
l_response CLOB;
l_url VARCHAR2(250) := 'https://reqres.in/api/users';
usrid NUMBER;
l_request CLOB;
l_ref_cursor SYS_REFCURSOR;
--cursor c_get_request is
--select 'morpheus' as "name",
--       'leader' as "job"
--from dual;

BEGIN
apex_web_service.g_request_headers(1).name := 'Content-Type';
apex_web_service.g_request_headers(1).value := 'application/json';
--open l_ref_cursor for
--select 'morpheus' as "name",
--       'leader' as "job"
--from dual;
APEX_JSON.initialize_clob_output;
APEX_JSON.open_object; ---{
APEX_JSON.write('name','morpheus');
APEX_JSON.write('job','leader');
APEX_JSON.close_object; --}
l_request := APEX_JSON.get_clob_output;
DBMS_OUTPUT.PUT_LINE(l_request);
l_response :=apex_web_service.make_rest_request(p_url => l_url,
                                               p_http_method => 'POST',
                                               p_wallet_path => 'file:C:\app\db_home\bin\ow\wallets', --neded for https acccess
                                               p_wallet_pwd => 'walletpassword',
                                               p_body => l_request
--                                               p_parm_name => apex_util.string_to_table('name:job'),
--                                               p_parm_value => apex_util.string_to_table('morpheus:leader')
                                               );

DBMS_OUTPUT.PUT_LINE(l_response);
--parse the response
--APEX_JSON.parse(l_response);
--usrid := APEX_JSON.get_number(p_path => 'id');

DBMS_OUTPUT.PUT_LINE('Created ID is :'||usrid);

END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...