请求标头CURLOPT_HEADER时没有返回任何帖子数据。 PHP CURL

时间:2011-07-26 21:29:56

标签: php curl

我正在使用curl和PHP发出POST请求,将用户名/密码数组作为JSON对象发送。

到目前为止,所有人都工作得非常好。现在我想阅读标题,以便我可以解析cookie。我知道我可以使用文件/ jar并测试过 - 效果很好。我不想把东西写到磁盘上。

所以我将CURLOPT_HEADER标记为TRUE,我可以解析cookie值。

但是 - 返回的数据消失了。完全没了...... 当我标记_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...

我一直在挖掘不同的帖子,似乎选择的顺序有所不同。试图移动他们 - 没有运气。

想法?!

2 个答案:

答案 0 :(得分:2)

使用:

$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>';

答案 1 :(得分:0)

试试这个

  

curl_setopt($ CH,CURLOPT_NOBODY,假)