首页 > 解决方案 > 从 Oracle APEX 调用 Mailgun Rest API

问题描述

我使用 Oracle Apex 19,需要创建一个使用 Mailgun REST API 发送邮件的程序。

如果我在控制台上编写下一个 curl 代码,它可以正常工作:

curl --location --request POST 'https://api.mailgun.net/v3/example.com.ar/messages' \
--header 'Authorization: Basic <<my-secrect-api-code>>' \
--form 'from=postmaster@example.com.ar' \
--form 'to=test@gmail.com' \
--form 'subject=Test' \
--form 'template=mytemplatename'

在邮递员中也可以正常工作:

邮递测试

我怎么说,我需要将此代码翻译成 APEX PL/SQL,我试过了

    declare
      -- Local variables here
      i      integer;
      l_resp clob;
      g_url  varchar2(300) := 'https://api.mailgun.net/v3/example.com.ar/messages';
    
    begin
      -- Test statements here
    
      apex_web_service.g_request_headers(1).name := 'Authorization';
      apex_web_service.g_request_headers(1).Value := 'Basic my-secret-code';
    
    
      l_resp := apex_web_service.make_rest_request(p_url         => g_url,
                                                   p_http_method => 'POST',
                                                   p_parm_name  => apex_util.string_to_table('from:to:subject:template',':'),
                                                   p_parm_value => apex_util.string_to_table('postmaster@example.com.ar:test@gmail.com:helo:mytemplate',':'),
                                                   p_wallet_path =>'file:/backup/wallet',
                                                   p_wallet_pwd  => null);
    
    dbms_output.put_line(L_resp);

end;

当调用 pl/sql 过程时,我总是得到错误:

{
  "message": "'from' parameter is missing"
}

听起来好像没有发送 FORM 参数,但我不知道如何使用 APEX_WEB_SERVICE 发出此请求。

你能帮助我吗?

标签: oracle-apexmailgunoracle-apex-5.1

解决方案


添加参数“Content-Type”我已经解决了这个问题:

apex_web_service.g_request_headers(2).name := 'Content-Type';
apex_web_service.g_request_headers(2).value := 'application/x-www-form-urlencoded';


推荐阅读