我正在使用curl和PHP发送POST请求,将用户名/密码数组作为JSON对象。
到目前为止一切都很顺利。现在我想读取报头,以便解析cookie。我知道我可以使用一个文件/jar,并且已经测试过了——效果很好。我不想写入任何东西到磁盘
所以我标记CURLOPT_HEADER为TRUE,我可以解析cookie值。
然而——返回的数据已经消失。完全消失了……当i flag _HEADER FALSE -我看到响应。
代码:
$login_array = array('login' => array('username' => $username, 'password' => $password));
$login_json = json_encode($login_array);
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE); <-- this line f***s it all up...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $login_json);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($ch, CURLOPT_URL, 'http://localhost/test/token');
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code != 200) { /* do something */ }
preg_match_all('|Set-Cookie: (.*);|U', $result, $content);
$cookies = implode(';', $content[1]);
echo "cookie: $cookies<br>"; <-- thanks _HEADER for the cookie value
$response = json_decode($result);
$user_id = $response->user->id;
echo 'user_id: ' . $user_id . '<br>'; <-- empty man... headers are on means body is off...
我一直在挖掘不同的帖子,似乎选项的顺序有所不同。试着移动它们-没有运气。
想法? !
使用说明:
$body=mb_substr($result, curl_getinfo($ch,CURLINFO_HEADER_SIZE));
$response = json_decode($body);
$user_id = $response->user->id;
echo 'user_id: ' . $user_id . '<br>';
try this
curl_setopt ($ ch CURLOPT_NOBODY假)