2017-07-25 38 views
0

我一直在努力解析https响应,以获取将来的https调用所需的令牌值。解析PHP中令牌的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在这里]门户令牌7eae331326c9363c9cf47ef58c1d844422dabb0令牌结果”

所以我想我可以通过空格拆分字符串并取出令牌。但是,这也没有用。

在Python我完整的代码是这样的:

​​

在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,我完全失去了。

谢谢

+0

可能重复的[在xml中获取特定节点?](https://stackoverflow.com/questions/35242420/get-specific-node-in-xml) – mickmackusa

回答

0

终于明白了。

我绝对让它变得比它更复杂。

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