为什么json_decode没有将此curl头响应从字符串转换为对象?

时间:2017-07-07 00:47:30

标签: php json web-services curl http-headers

我正在对Web服务进行登录调用,如果成功响应标头中的标记。是否可以将此响应从字符串转换为对象?

对于来自Web服务的其他响应,我可以使用json_decode将响应从字符串转换为对象。然后我可以访问我需要的属性,例如X-AUTH-TOKEN。在这个例子中,json_decode返回NULL

希望这不是一个代码块太大,我觉得这里的每一行都与这个问题相关,或者确定我缺少什么。目前我正在努力使用explode等来打破字符串。我认为有更优雅的方法,但我在这里找不到答案。提前致谢。

我的班级文件

public function login($username, $password) {
        $url = $this->base_url()."login";
        $headers = array(
            "username: $username",
            "password: $password"
        );
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch,CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_NOBODY, 1);
        $response = $this->checkResponse($ch);
        return $response;
}

public function checkResponse($ch) {
        $response = curl_exec($ch);
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if (curl_errno($ch) !== 0) {
            return curl_errno($ch);
        } else {
            $arr = array($httpcode, $response);
            return $arr;
        }
        curl_close($ch);
}

我的登录文件

$data = $user->login($username, $password);
if (is_array($data)) {
    if ($data[0] !== 200) {
        ......
    } else {
        $response = json_decode($data[1);
        // do stuff here
    }

0 个答案:

没有答案