Как я могу итеративно отправить почтовый запрос в al oop на удаленный сервер с PHP? - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь отправить данные на сервер несколько раз, в зависимости от размера массива. L oop правильно отправляет данные один раз, но не после этого. Мой код:

    $id = "uuid" //dynamic  
    $username = "emailadd@example.com";
    $password = "password";
    $serverurl = "http://0.0.0.0:8080/api/v1/experiments/". $id ."/buckets";

    $alloc = floor((1 / sizeof($arrayAsBigAsValueArray)) * 100) / 100;
    $sum = 0;
    for ($x = 0; $x < sizeof($valuearray); $x++){

        $datasobj = array(
            "label" => $arrayAsBigAsValueArray[$x], 
            "allocationPercent" => $alloc,
            "payload" => json_encode(array('mykey'=>$valuearray[$x]),JSON_UNESCAPED_SLASHES)
        );

        if($x< sizeof($valuearray)-1){
            $sum += $alloc;
        }
        else{
            if((1 - $sum) != 0){
                $datasobj ["allocationPercent"] = (1 - $sum); 
            }
        }

        $headers = array(
            "Content-type: application/json",
            "Authorization: Basic " . base64_encode("$username:$password")
        );

        $ch = curl_init($serverurl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLINFO_HEADER_OUT, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $datasobj);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $result2 = curl_exec($ch);
        curl_close($ch);
    }

Эта функция вызывается из WordPress admin- ajax, и ее вызывает функция javascript. Я получаю ошибку 400, когда X> 0. Как это исправить? Я пытаюсь использовать API-интерфейс Wasabi A / B, который можно найти здесь .

1 Ответ

1 голос
/ 01 августа 2020

Откуда идет 400? Ваш сервер или васаби?

Если он от васаби, по вашему запросу curl я подозреваю, что в API установлен ограничитель скорости. Вам нужно будет поставить задержку между запросами. Самый простой - это sleep ().

Или

"payload" => json_encode(array('mykey'=>$valuearray[$x])...

Есть ли несколько ключей авторизации, по одному для каждого запроса? Правильно ли заполнен массив?

Проверьте 400 ошибок: https://wasabi.com/wp-content/themes/wasabi/docs/API_Guide/topics/Error_Responses.htm

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