无法在PHP中解析令牌的HTTPS响应

时间:2017-07-25 20:09:50

标签: php json xml parsing https

我一直在努力解析https响应,以获取未来https调用所需的令牌值。

要从JSON响应中解析令牌,我已经尝试了以下内容:

$doc = json_decode($response, true);
token = $doc["result"]["token"];

要从XML响应中解析令牌,我尝试了以下内容:

$json = json_encode($response);
$token = json_decode($json,TRUE)['raw_body'];

在python中解析令牌的JSON所有我必须做的是:

token = json.loads(data.text)["result"]["token"]

如果我将令牌的控制台输出复制粘贴到以后的https调用中 它工作得很好,所以我想也许我可以"欺骗"一点点,捕获控制台输出并使用它,所以我尝试了以下:

ob_start();
echo $token;
$test = ob_get_contents();
ob_end_clean();
echo $test;

然而,这也没有奏效。接下来我想到的是我解析'的结果。有一些奇怪的字符导致令牌在将来的https调用中失败。所以我尝试了以下内容:

$token = preg_replace("/[^\w]+/", " ", $data['raw_body']);

这给了我一个有趣的回答: " xml版本1 0编码UTF 8结果xmlns [url was here] portal token 7eae331326c9363c9cf47ef58c1d844422dabb0 token result"

所以我想我可以用它的空格分割字符串并拉出令牌。但是,这也不起作用。

在Python中,我的完整代码如下所示:

# Request Token
data = requests.post(ACCESS_TOKEN_URL, data={'apikey': APIKEY, "format": "json"},
                     auth=HTTPDigestAuth(USERNAME, PASSWORD))
# Parse JSON for Token
token = json.loads(data.text)["result"]["token"]

在PHP中,这就是我所拥有的:

$data = array(
        'apikey' => $this->api_key,
        'format' => 'xml');
    Unirest\Request::auth($this->username, $this->password, CURLAUTH_DIGEST);
    $response = Unirest\Request::post(self::build_url("auth", "get-token")
 // lots of comments of attempts below

有什么想法吗?这是我使用PHP的第一周,我完全迷失了。

由于

1 个答案:

答案 0 :(得分:0)

终于明白了。

我确实让它变得更加复杂。

 $xml = simplexml_load_string($response->body);
 $token = $xml->token;