是否可以先在授权的情况下在 PHP 中执行 POST API 调用?

Is it possible to perform a POST API call in PHP with authorization first?

我刚在大学开始学习 CS,想在假期创建一个小的 webdev 项目。我创建了一个简单的联系表单,要求用户提供一些数据(文本、下拉选项)。按下提交按钮后,我想对 UiPath Orchestrator 执行 POST api 调用以触发机器人...

因为这是我第一次处理 PHP 我不太确定如何解决这个问题。 我能够从提交的表单中获取数据。但现在我正在为 API 电话而苦苦挣扎。我已经在 Swagger UI 和 Postman 中对其进行了测试并且它有效。

问题: 我必须通过批处理程序 ID 进行身份验证,该 ID 也可以通过 API 调用检索。

问题:

  1. 创建一个负责 API 调用的新函数是否有意义,因为我可能想添加触发其他机器人进程的其他表单?

  2. 根据我的研究,我很确定我必须使用 cURL 调用(或者这是错误的?)..如果我需要在每次按下提交按钮时进行身份验证,怎么能检索令牌并将其作为实际 POST 调用的 header(或句柄 idk)参数传递?

如果您不能理解我的问题,非常抱歉!我会尽力重新制定它,但由于我对此完全没有经验,所以我希望你能原谅我。

期待您的帮助!

到目前为止,这是我的代码:

add_action('wpcf7_mail_sent','cf7_api_sender');

函数cf7_api_sender($contact_form){ $title = $contact_form ->title;

if ($title === 'MA_Demo'){
    $submission = WPCF7_Submission::get_instance();

    if ($submission){
        $posted_data = $submission->get_posted_data();


        $firstname = $posted_data['Firstname'];
        $lastname = $posted_data['Lastname'];
        $department = $posted_data['Departement'][0];
        $workload = $posted_data['Workload'][0];


        /*

        this is what I found so far but ofc it does not work at all.. do I have to put the body (itemData) into the args? 
        and where can i pull the beacon token and add it?

        $url = '"https://cloud.uipath.com/..../..../orchestrator_/odata/Queues/UiPathODataSvc.AddQueueItem"
        $args =[
            accept: application/json
            X-UIPATH-OrganizationUnitId: .....
            {  \"itemData\": {    \"Name\": \"...\",    \"Priority\": \"...\",    \"Reference\": \"...\",    \"SpecificContent\": {\"key1\": \"Rick \", \"key2\": \"Roll\"}  }}
        ]

        */

        /* this was to test if it works to pull data 

        $myfile = fopen("data.txt", "w") or die("Unable to open file!");
        $txt = $firstname.$lastname.$department.$workload;
        fwrite($myfile, $txt);
        fclose($myfile);

        */
    }
}

}

首先,您需要使用您的租户、用户名和密码致电 /api/Account/Authenticate。它会 return 类似于

{
  "result": "HzptFsZpGMS64j5DTb4TqX-cHVv2AtC4noVCQrkHKr54r...",
  "targetUrl": null,
  "success": true,
  "error": null,
  "unAuthorizedRequest": false,
  "__abp": true
}

然后通过添加 header 项

在添加 Queue 项调用中使用该结果
"Authorization":"Bearer " & result  ("Bearer HzptFsZpGMS64...")

这是针对 Orchestrator on-prem 2019.10 的,因此云可能略有不同。