На странице utf-8 php у меня возникают проблемы при чтении вывода ответа soap.
Это мой код:
<?php
header('Content-Type:text/html; charset=UTF-8');
ini_set('display_errors','1');
error_reporting(E_ALL);
class loginInfo
{
public $loginOperation= array(
"loginId" => 'username',
"password" => 'password',
"thirdPartyId" => 'appname',
"apiVersion" => '2'
);
}
$client = new SoapClient("http:/example.com:9280/wsdl/test.wsdl", array('exceptions' => 0, 'trace' => 1,'encoding'=>'UTF-8'));
echo("<pre>");
$loginInfo = new loginInfo();
$response = $client->Login($loginInfo);
$data = $response->loginResult->loginSuccessData;
$primaryToken = $data->token->primary;
$secondaryToken = $data->token->secondary;
$expiration = $data->expiration;
var_dump($data); // token strings unreadable in this dump
echo $primaryToken."\n"; //this line is garbled
echo htmlentities($primaryToken)."\n"; //This line returns blank
echo "RESPONSE:\n" . htmlentities($client->__getLastResponse()). "\n";
?>
И это является текстом ответа со страницы.
object(stdClass)#5 (2) {
["token"]=>
object(stdClass)#6 (2) {
["primary"]=>
string(32) "Ȭ�h�����8��9����PӇ�k0$*���"
["secondary"]=>
string(32) "p���z��5Y����Z�6�:�"
}
["expiration"]=>
string(24) "2020-01-04T08:37:06.835Z"
}
Ȭ�h�����8��9����PӇ�k0$*���
RESPONSE:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<tfm:loginResponse xmlns:tfm="http://www.example.com/test.xsd">
<tfm:loginResult>
<tfm:loginSuccessData>
<tfm:token>
<tcor:primary xmlns:tcor="http://www.example.com/exampleTypes.xsd">yKz/aKuGvZPFOK8e7A8508LT51DTh6JrMAEkAiqbkr4=</tcor:primary>
<tcor:secondary xmlns:tcor="http://www.example.com/exampleTypes.xsd">cMKtkAzwBZl6FsLkkzUHFwZZhx3U5xb7WhDjnTaZOqc=</tcor:secondary>
</tfm:token>
<tfm:expiration>2020-01-04T08:37:06.835Z</tfm:expiration>
</tfm:loginSuccessData>
</tfm:loginResult>
</tfm:loginResponse>
</soapenv:Body>
</soapenv:Envelope>
Обтекание переменной токена в html сущностях полностью удаляет ее со страницы при отображении.
Не совсем уверен, имеет ли это отношение к кодирование, поскольку, насколько я знаю, все должно быть в UTF-8.