【发布时间】:2018-11-05 04:54:02
【问题描述】:
使用以下代码:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.sample.com/v2/clients?token=DMfJjzWLngIn0JBHA0gWcg",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"active_registration_id\"\r\n\r\n123\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"language_id\"\r\n\r\n79\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"archived\"\r\n\r\n{{archived}}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"enabled\"\r\n\r\n{{enabled}}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\nSamplePassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password_confirmation\"\r\n\r\nSamplePassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[first_name]\"\r\n\r\nJustin\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[last_name]\"\r\n\r\nTrudeau\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[email]\"\r\n\r\nemail@sample.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[telephone_1]\"\r\n\r\n555-555-5555\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[date_of_birth]\"\r\n\r\n1943-10-10\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[gender]\"\r\n\r\nMale\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[referral_code]\"\r\n\r\nAmple Clinic 123\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[status]\"\r\n\r\nRegistration Pending\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"For Additional Permitted Parameters:\"\r\n\r\nSee Registration Parameters\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[date_of_birth]\"\r\n\r\n1943-10-10\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[gender]\"\r\n\r\nMale\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[referral_code]\"\r\n\r\nAmple Clinic 123\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"registration_attributes[status]\"\r\n\r\nRegistration Pending\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; ",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
"content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}</pre>
我收到响应 {"registration_attributes":["Missing"]} 此代码将在 Postman 中运行,但在生产服务器上不起作用。我创建registration_attributes数组的方式有什么问题吗?
【问题讨论】:
-
有一个
http_build_query()函数可以用来代替发送原始请求 -
content-type: multipart/form-data;你是通过curl上传文件吗? -
所以我应该构建一个包含主表单数据和注册属性数组的数组,并在将其添加到 CURLOPT_POSTFIELDS 行之前对其使用 http_build_query() 函数?您认为 Postman 和输出的请求之间存在什么差异?
-
您也可以将数组传递给 postfield。至于差异,我怀疑你错过了最后一个边界。您可以搜索原始形式的 multipart/form-data 以及边界的工作方式
-
没有文件上传,我试过删除
content-type: multipart/form-data;
但我仍然得到相同的结果