curl_setopt 如果我传递一个数组,会出现内部服务器错误
curl_setopt Internal Server Error if I pass an array
我正在尝试调用 Web 服务,它在将 json 对象传递给 curl_setopt($cSession, CURLOPT_POSTFIELDS, $patientJS)
时工作正常,但发送的对象没有正确的结构,我现在传递一个数组,我收到内部服务器错误。如果我打印 curl_error() 它告诉我
Warning: curl_error(): 1044 is not a valid cURL handle resource
$patient = array('nom' => $_POST['nom'],
'prenom' => $_POST['prenom'],
'login' => $_POST['email'],
'password' => $_POST['password'],
'datenaissance' => $_POST['datenaissance'],
'sexe' => $_POST['sexe']);
$patientJS = json_encode($patient);
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, 'http://medicitussrv.herokuapp.com/enrollPatient');
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, $patientJS);
$result = curl_exec($cSession);
curl_close($cSession);
这行得通,但发送了一个像
这样的对象
{ '{"nom":"Preciado","prenom":"Rodriguez","login":"artur_preciado@hotmail.com","password":"Medicitus1","datenaissance":"2017-09-06","sexe":"homme"}': '' }
传递一个数组:
$patient = array('nom' => $_POST['nom'],
'prenom' => $_POST['prenom'],
'login' => $_POST['email'],
'password' => $_POST['password'],
'datenaissance' => $_POST['datenaissance'],
'sexe' => $_POST['sexe']);
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, 'http://medicitussrv.herokuapp.com/enrollPatient');
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, $patient);
$result = curl_exec($cSession);
curl_close($cSession);
这 returns 一个内部服务器错误
在 curl 中发送数组时使用 http_build_query
它将创建 url 编码字符串
$patient = array('nom' => $_POST['nom'],
'prenom' => $_POST['prenom'],
'login' => $_POST['email'],
'password' => $_POST['password'],
'datenaissance' => $_POST['datenaissance'],
'sexe' => $_POST['sexe']);
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, 'http://medicitussrv.herokuapp.com/enrollPatient');
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($patient));
我正在尝试调用 Web 服务,它在将 json 对象传递给 curl_setopt($cSession, CURLOPT_POSTFIELDS, $patientJS)
时工作正常,但发送的对象没有正确的结构,我现在传递一个数组,我收到内部服务器错误。如果我打印 curl_error() 它告诉我
Warning: curl_error(): 1044 is not a valid cURL handle resource
$patient = array('nom' => $_POST['nom'],
'prenom' => $_POST['prenom'],
'login' => $_POST['email'],
'password' => $_POST['password'],
'datenaissance' => $_POST['datenaissance'],
'sexe' => $_POST['sexe']);
$patientJS = json_encode($patient);
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, 'http://medicitussrv.herokuapp.com/enrollPatient');
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, $patientJS);
$result = curl_exec($cSession);
curl_close($cSession);
这行得通,但发送了一个像
这样的对象{ '{"nom":"Preciado","prenom":"Rodriguez","login":"artur_preciado@hotmail.com","password":"Medicitus1","datenaissance":"2017-09-06","sexe":"homme"}': '' }
传递一个数组:
$patient = array('nom' => $_POST['nom'],
'prenom' => $_POST['prenom'],
'login' => $_POST['email'],
'password' => $_POST['password'],
'datenaissance' => $_POST['datenaissance'],
'sexe' => $_POST['sexe']);
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, 'http://medicitussrv.herokuapp.com/enrollPatient');
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, $patient);
$result = curl_exec($cSession);
curl_close($cSession);
这 returns 一个内部服务器错误
在 curl 中发送数组时使用 http_build_query
它将创建 url 编码字符串
$patient = array('nom' => $_POST['nom'],
'prenom' => $_POST['prenom'],
'login' => $_POST['email'],
'password' => $_POST['password'],
'datenaissance' => $_POST['datenaissance'],
'sexe' => $_POST['sexe']);
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, 'http://medicitussrv.herokuapp.com/enrollPatient');
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($patient));