Как передать многомерный ассоциативный массив или json в качестве полезной нагрузки в запрос cURL. Я уже какое-то время безуспешно пытаюсь понять это.
Вот что я сделал до сих пор. Я делаю запрос на завивание и передаю json в поля CURLOPT_POSTFIELDS
. Это работает нормально. Проблема в том, что я хочу, чтобы код запускался для нескольких пользователей, которые находятся в строке json, сохраненной в переменной
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://test.url/tokens',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"customerName": "orland",
"mno": "Network",
"amount": "1",
"msisdn": "447911123456",
"description": "Awaiting",
"reference": "0fgdufgdfgdfs"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Приведенный выше код работает нормально.
Но полезная нагрузка для CURLOPT_POSTFIELDS
не фиксирована.
Вот что я пытался сделать, я закодировал строку json и попытался передать ее в цикл for. Я уверен, что подход неплохой, но я не совсем правильно понимаю синтаксис. Вот мой код.
<?php
$recip = '[{
"customerName": "Sorland",
"mno": "Network",
"amount": "1",
"msisdn": "447911123346",
"description": "Awaiting",
"reference": "0fgdufgdfgdfs"
},
{
"customerName": "Corland",
"mno": "MTN",
"amount": 1,
"msisdn": "447911123678",
"description": "Awaiting",
"reference": "0jsbfbsubfhbj"
},
{
"customerName": "orland",
"mno": "MTN",
"amount": 1,
"msisdn": "447911123111",
"description": "Awaiting",
"reference": "1234568djnfjnfjds"
}]';
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://test.url.com/api/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>
echo ("'{<br>");
foreach($arr[$keys[$i]] as $key => $value) {
echo implode($key . " : " . $value . ",<br>");
}
echo "}',<br>";
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
}
Я хочу использовать цикл for для выполнения нескольких запросов curl с разными полезными нагрузками, а полезные нагрузки поступают из приведенных выше данных json. Я преобразовал json в массив, чтобы можно было выполнить цикл, и преобразовал его обратно в json для CURLOPT_POSTFIELDS
.
Почему вы берете строку JSON, преобразуя ее в массив PHP. .... только чтобы преобразовать его обратно в строку JSON... Или я что-то упустил
Хорошо, я понимаю тебя @RiggsFolly. Я следовал некоторым учебникам и закончил с этим. Пожалуйста, как бы вы предложили мне действовать?
Не совсем уверен, что вы пытаетесь сделать, но добавление всех 4 этих массивов в структуру данных JSON сделает его недействительным json
Хорошо, если вы не уверены в том, чего я пытаюсь достичь, возможно, мне следует перефразировать вопрос. Мой первый код выполняет вызов curl с полезной нагрузкой. Я просто пытаюсь сделать вызов curl несколько раз. Но полезная нагрузка будет исходить из json.
@RiggsFolly, я только что отредактировал вопрос. надеюсь теперь понятнее