Я пытаюсь выполнить фиксацию в репозитории gitlab через API gitlab и PHP. Хотя полезная нагрузка выглядит хорошо для меня, запрос локонов терпит неудачу и возвращаетgitlab commit через cURL с ошибкой PHP
[error] => branch_name is missing, commit_message is missing, actions is missing
Мой код выглядит следующим образом:
$ch_git = curl_init();
curl_setopt($ch_git, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch_git, CURLOPT_HTTPHEADER, array('PRIVATE-TOKEN: xxx'));
curl_setopt($ch_git, CURLOPT_URL, 'https://gitlab.com/api/v3/projects/xxx/repository/commits');
curl_setopt($ch_git, CURLOPT_POST, true);
$info = array(
'id' => 'xxx',
'branch_name' => 'master',
'commit_message' => 'updating content...',
'actions' => array(
'action' => 'update',
'file_path' => 'filename',
'content' => 'test 1234'
)
);
$payload = json_encode($info, JSON_PRETTY_PRINT);
echo '<pre>';
echo $payload;
echo '</pre>';
curl_setopt($ch_git, CURLOPT_POSTFIELDS, $payload);
$res = curl_exec($ch_git);
echo '<pre>';
print_r(json_decode($res));
echo '</pre>';
Насколько я могу видеть, моя полезная нагрузка отформатирован как в the example, но, может быть, я чего-то не хватает.
Есть несколько вещей, которые стоит попробовать, начните с установки пользовательского запроса через завиток -> 'curl_setopt ($ ch_git, CURLOPT_CUSTOMREQUEST , "POST"); 'и также указать свой тип содержимого как' application/json' в заголовках -> 'curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('PRIVATE-TOKEN: xxx', 'Content-Type: application/json '). Я предполагаю, что заголовки будут вашей проблемой, как в примере, который вы связали, они также устанавливают заголовок (* '--header" Content-Type: application/json "' *). – Darren
Добавить тип содержимого что-то изменилось. Теперь я получаю ошибку 500. Лучше, чем раньше. :-) – flomei
H ага кричит! С вашего конца или с их? ; -P – Darren