Вы упоминаете:
json_encode($contentPostData);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Но назначаете ли вы закодированный json на $data
? Я имею в виду: вы делаете:
$data = json_encode($contentPostData);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Я вижу, что веб-сервис, которому вы звоните, использует com.fasterxml.jackson
, поэтому, скорее всего, ожидает формат JSON, и поэтому ваша сериализация должна быть в порядке (если имена полей и типы совпадают).
Я также предлагаю установить заголовок для информирования того веб-сервиса о том, что вы отправляете файл json (если он допускает другие форматы):
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
);
Итак:
$data = json_encode($contentPostData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Если это не сработает, то, скорее всего: a) ваш JSON недействителен (ожидается другая структура) или b) веб-служба фактически ожидает формат, отличный от JSON (возможно, стандартные многоэлементные данные например)