php - Why am I getting a generic internal_server_error message with this CURL PUT?
Using Canvas API to update comment and feedback with the following PHP:
$token_url = 'https://' . $lti_base_url . '.instructure.com/api/v1/courses/' . $course_id . '/assignments/' . $assign_id . '/submissions/' . $user_id;
// var_dump($token_url);
$header = array("Authorization: Bearer {$token}");
$post = [
'comment'=>$msg_body,
'submission'=>$grade,
];
$curl = curl_init($token_url);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,"PUT");
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl,CURLOPT_POSTFIELDS,$post);
$lti_msgresponse = curl_exec($curl);
curl_close($curl);
I get back variations on:
{"errors":[{"message":"An error occurred.","error_code":"internal_server_error"}],"error_report_id":2255}
Other, very similar scripts work just fine (although none are "PUT" requests). What am I missing? These generic error messages are really frustrating.
If the syntax is correct maybe it's a permissions issue with the API itself?
Answer
Solution:
Read the documentation!
The fields are: comment[text_comment] submission[posted_grade]
I left out the bracketed portion...
So should be:
$post = [
'comment[text_comment]'=>$msg_body,
'submission[posted_grade]'=>$grade,
];
Would help if the error codes actually meant something.
Source