我试图将json对象发送到服务器并从响应头获取变量。当我尝试使用邮递员做这个请求时,它的工作很棒。但在PHP中我遇到错误。
我的PHP代码:
$url = 'https://test.com/login';
$postArray = array('email' => 'test@gmail.com', 'password' => 'test');
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($postArray));
$response = curl_exec ($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
var_dump($header);
但是标题的响应我得到了php:
string(370)" HTTP / 1.1 500内部服务器错误缓存控制: no-cache,no-store,max-age = 0,必须重新验证Content-Type: application / json; charset = UTF-8日期:Wed,13 Dec 2017 09:48:26 GMT 过期:0 Pragma:no-cache服务器:nginx / 1.10.1 X-Content-Type-Options:nosniff X-Frame-Options:DENY X-XSS-Protection:1; mode = block Content-Length:320连接: 保持活力"
如何修复代码以使其工作? 非常感谢你。
更新: 我添加到代码:
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
问题解决了。 谢谢
答案 0 :(得分:0)
由于内容是json,因此您需要使用multipart/form-data
:
curl_setopt($curl, CURLOPT_HTTPHEADER, array("content-type: multipart/form-data;"))