Ich versuche, ein Commit zu einem gitlab Repository über die gitlab API und PHP zu machen. Obwohl die Nutzlast mir gut aussieht, schlägt die cURL Anforderung und gibtgitlab commit über cURL mit PHP schlägt fehl
[error] => branch_name is missing, commit_message is missing, actions is missing
Mein Code wie folgt aussieht:
$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>';
Soweit ich sehen kann, ist meine Nutzlast wie in the example formatiert, aber vielleicht fehlt mir etwas.
Es gibt ein paar Dinge, einen Versuch wert, beginnen Sie mit einer benutzerdefinierten Anfrage per curl Einstellung -> 'curl_setopt ($ ch_git, CURLOPT_CUSTOMREQUEST , "POST"); 'und auch Angabe Ihres Inhaltstyps als' application/json' innerhalb der Header -> 'curl_setopt ($ ch, CURLOPT_HTTPHEADER, Array ('PRIVATE-TOKEN: xxx', 'Content-Type: application/json '); '. Ich gehe davon aus, dass die Header Ihr Problem sind, wie in dem Beispiel, das Sie verlinkt haben, sie setzen auch den Header (*' --header "Content-Type: application/json" '*) – Darren
Addind den Inhaltstyp habe tatsächlich etwas verändert, jetzt bekomme ich einen Fehler 500. Besser als vorher :-) – flomei
H Aha, hoppla! Auf deinem oder ihrem Ende? ;-P – Darren