Конечная точка Eventbrite Batch — вы передали тело запроса, которое не было в формате JSON

Мой JSON ниже, который проверяет штрафа (числа являются фиктивными числами!). Эта строка присваивается переменной $payload,

[{
"method": "GET",
"relative_url": "series/4/events/?expand=ticket_classes"}, {
"method": "GET",
"relative_url": "series/5/events/?expand=ticket_classes"}, {
"method": "GET",
"relative_url": "series/6/events/?expand=ticket_classes"}, {
"method": "GET",
"relative_url": "series/7/events/?expand=ticket_classes"}, {
"method": "GET",
"relative_url": "series/8/events/?expand=ticket_classes"}, {
"method": "GET",
"relative_url": "series/9/events/?expand=ticket_classes"}]

Мой PHP выглядит следующим образом:

    $url = "https://www.eventbriteapi.com/v3/batch/?token=".$token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,$payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($payload))
);
curl_setopt($ch, CURLOPT_POST, 1);
$body = \curl_exec($ch);
curl_close($ch);
$json = \json_decode($body,true);
echo $body;

Эхо выплевывает:

{"status_code": 400, "error_description": "You passed a request body that was not in JSON format.", "error": "INVALID_BODY"}

Кажется, все хорошо — я что-то упускаю очевидное?

Когда я передаю данные через https://www.eventbriteapi.com сайт, для каждого я получаю ответ тела, который просто содержит детали нумерации страниц и никаких деталей о событии …

Спасибо

0

Решение

Изменить HTTPClient.php

Заменить это:

   $options = array(
'http'=>array(
'method'=>$httpMethod,
'header'=>"content-type: application/json\r\n",
'content'=>$data,
'ignore_errors'=>true
)
);

С этим:

    $options = array(
'http'=>array(
'method'=>$httpMethod,
'header'=>"content-type: application/json\r\n",
'ignore_errors'=>true
)
);

if ($httpMethod == 'POST') {
$options['http']['content'] = $data;
}

Ссылка: https://github.com/eventbrite/eventbrite-sdk-php/issues/7#issuecomment-308537756

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]