#php #soap #php-7.1
#php #soap #php-7.1
Вопрос:
Я вызываю метод, используя php soap.
$options = ['trace' => 1,
'exceptions' => true,
'wsdl_cache' => WSDL_CACHE_NONE];
$wsdl = 'confidential-wsdl';
$client = new SoapClient($wsdl,$options);
try {
$result = $client->__call("SomeClientsMethod",array($params));
$response = $client->__getLastResponse();
var_dump($result); // Not all data received
var_dump($response); // All data received
} catch (Exception $e) {
//No exception thrown
throw new Exception("Request failed!".$client->__getLastResponse());
}
Этот вызов возвращает не все данные, которые определены в wsdl,
но если я вызываю $client->__getLastResponse(), то я получаю все данные правильно
Может ли кто-нибудь указать мне правильное направление для отладки? Заранее спасибо
Вызывающий метод и wsdl обновляются дополнительными данными, которые я не получаю.
Комментарии:
1. Вы начали с того, что заключили это в
try / catch
?2. Извините, я отредактировал свой вопрос. Да, я использую try / catch, но не генерируется исключение. Итак, вызывающий метод был обновлен теми дополнительными данными, которые я не получаю. Может быть, какая-то проблема с кэшем? Но у меня есть опция WSDL_CACHE_NONE
Ответ №1:
Чтобы перехватить ошибки, попробуйте обернуть свои вызовы в try / catch:
try{
$client = new SoapClient($wsdl,$options);
$client->__call("SomeClientsMethod",array($params));
}
# I'm not sure exactly which one of these it is:
catch(Throwable $e){
var_dump($e->getMessage());
}
catch (SoapFault $e) {
var_dump($e->getMessage());
}
Комментарии:
1. Здесь та же проблема. я уже использовал оболочку try catch. но, похоже, не работает
Ответ №2:
похоже, это была проблема с кэшем. Вероятно, из-за опции soap.wsdl_cache_ttl=86400 в php.ini Теперь вызов функции возвращает все данные…
Спасибо за ответы
Комментарии:
1. Я рад, что вы разобрались с этим!
Ответ №3:
У меня та же проблема, php выполняет синтаксический анализатор, и он возвращает только два элемента
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2023-01-27T18:05:56.227Z</u:Created>
<u:Expires>2023-01-27T18:10:56.227Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body>
<ListarSolicitacoesInscricaoMunicipalResponse xmlns="Jucesp.Services.InscricoesMunicipais.InscricaoMunicipal">
<ListarSolicitacoesInscricaoMunicipalResult xmlns:a="Jucesp.Services.InscricoesMunicipais.InscricaoMunicipal/01" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AuthenticationHeader i:nil="true" xmlns="Jucesp.Services.Viabilidades.Data/01" xmlns:b="Jucesp.Services.Data/01"/>
<a:solicitacoes>
<a:solicitacao>
<a:protocoloRedesim>SPP2330004767</a:protocoloRedesim>
<a:cnpj>49364299000152</a:cnpj>
<a:numeroRegistro i:nil="true"/>
<a:nomeEmpresarial>OSMAR DE PAULA LIMA FILHO MINI MERCADO</a:nomeEmpresarial>
<a:dataSolicitacao>2023-01-27T13:18:35.103</a:dataSolicitacao>
<a:orgaoRegistro>Junta Comercial</a:orgaoRegistro>
<a:eventos>
<a:evento>
<a:Codigo>101</a:Codigo>
<a:Descricao>Inscrição de primeiro estabelecimento</a:Descricao>
</a:evento>
</a:eventos>
<a:situacao>Viabilidade Utilizada</a:situacao>
</a:solicitacao>
</a:solicitacoes>
</ListarSolicitacoesInscricaoMunicipalResult>
</ListarSolicitacoesInscricaoMunicipalResponse>
</s:Body>
</s:Envelope>