首页 > 解决方案 > 如何处理 SOAP-WSDL 响应

问题描述

我正在使用 WebService (WSDL-SOAP) 从政府系统中检索一些信息。

为此,我使用“BeSimple”组件(https://github.com/BeSimple/BeSimpleSoapClient)来扩展原生 PHP SoapClient 函数,以便它能够读取“XOP/XML”文件而不是“Text/XML” ”。

一切正常。

我现在在处理响应时遇到了一些麻烦,因为它返回了太多的变量/属性,我将在下面解释。

WSDL 响应:

stdClass Object ( [sucesso] => 1 [mensagem] => Processo consultado com sucesso [processo] => stdClass Object ( [dadosBasicos] => stdClass Object ( [polo] => Array ( [0] => stdClass Object ( [parte] => Array ( [0] => stdClass Object ( [pessoa] => stdClass Object ( [documento] => Array ( [0] => stdClass Object ( [codigoDocumento] => 541.xxx.xxx-xx [emissorDocumento] => Secretaria da Receita Federal do Brasil [tipoDocumento] => CMF [nome] => ROGERIO XXXXX XXXXX ) [1] => stdClass Object ( [codigoDocumento] => XXXXXXX [tipoDocumento] => CI [nome] => ROGERIO XXXXXXXXXXX ) [2] => stdClass Object ( [codigoDocumento] => XXXXXXXXXX [emissorDocumento] => Justiça Eleitoral [tipoDocumento] => TE [nome] => ROGERIO XXXXXXXXXXXXXXXXXX ) ) [endereco] => Array ( [0] => stdClass Object ( [logradouro] => Rua Santo XXXXXXX [numero] => 245 [complemento] => casa [bairro] => Alvorada [cidade] => CONTAGEM [estado] => MG [cep] => 32042270 ) ) [nome] => ROGERIO GERALDO DA COSTA VALADARES [sexo] => M [nomeGenitora] => ESTER XXXXXXXXXXXXXXXXXX [dataNascimento] => 19651031 [numeroDocumentoPrincipal] => XXXXXXXXXXXXX [tipoPessoa] => fisica [nacionalidade] => BR ) [advogado] => Array ( [0] => stdClass Object ( [nome] => FELIPE MAURICIO SALIBA DE SOUZA [inscricao] => MG0108211A [numeroDocumentoPrincipal] => XXXXXXXXXXXXXXXXXXXX [intimacao] => [tipoRepresentante] => A ) ) [assistenciaJudiciaria] => [intimacaoPendente] => 0 ) ) [polo] => AT ) [1] => stdClass Object ( [parte] => Array ( [0] => stdClass Object ( [pessoa] => stdClass Object ( [documento] => Array ( [0] => stdClass Object ( [codigoDocumento] => 108.383.949.112 [emissorDocumento] => SECRETARIA FAZENDA [tipoDocumento] => RJC [nome] => DAVID ) [1] => stdClass Object ( [codigoDocumento] => 02.558.157/0009-102707200 [emissorDocumento] => Receita Federal [tipoDocumento] => RJC [nome] => Telefônica Brasil S.A ) [2] => stdClass Object ( [codigoDocumento] => XXXXXXXXXXXXXXXXXX [emissorDocumento] => SEF sp [tipoDocumento] => RJC [nome] => VIVO ) [3] => stdClass Object ( [codigoDocumento] => 6110801 [emissorDocumento] => junta comercial [tipoDocumento] => RJC [nome] => cadastro nacional de pessoa jurídica ) [4] => stdClass Object ( [codigoDocumento] => 35.3.0015881-4 [emissorDocumento] => NIRE [tipoDocumento] => RJC [nome] => TELEFÔNICA BRASIL S.A ) [5] => stdClass Object ( [codigoDocumento] => 0621904680045 [emissorDocumento] => JUNTA COMERCIAL [tipoDocumento] => RJC [nome] => TELEFONICA BRASILA S/A ) [6] => stdClass Object ( [codigoDocumento] => 02558157000910 [emissorDocumento] => receita federal do brasil [tipoDocumento] => RJC [nome] => Telefônica Brasil S.A. ) [7] => stdClass Object ( [codigoDocumento] => 14450231/000101 [emissorDocumento] => Ministério do desenvolvimento industrial e Comerci [tipoDocumento] => RJC [nome] => Fabiana Gaião Cunha S/A ) [8] => stdClass Object ( [codigoDocumento] => 02558157000162 [emissorDocumento] => RECEITA FEDERAL DO BRASIL [tipoDocumento] => RJC [nome] => TELEFONICA DO BRASIL SA ) [9] => stdClass Object ( [codigoDocumento] => 02.558.157/001-62 [emissorDocumento] => 02.558.157/001-62 [tipoDocumento] => RJC [nome] => VIVA S.A ) [10] => stdClass Object ( [codigoDocumento] => 062.190468.00-45 [emissorDocumento] => RFB [tipoDocumento] => RJC [nome] => TELEFÔNICA BRASIL S.A ) [11] => stdClass Object ( [codigoDocumento] => 621.904.680.045 [emissorDocumento] => ESTADO DE MINAS GERAIS [tipoDocumento] => RJC [nome] => Telefonica Brasil S.A. ) [12] => stdClass Object ( [codigoDocumento] => 02.558.157/0000-16 [emissorDocumento] => Receita Federal do Brasil [tipoDocumento] => CMF [nome] => TELEFONICA BRASIL S.A. ) [13] => stdClass Object ( [codigoDocumento] => 02558157/0009-10 [emissorDocumento] => RECEITA FEDERAL [tipoDocumento] => RJC [nome] => TELEFONICA BRASIL S.A ) [14] => stdClass Object ( [codigoDocumento] => 02558167000162 [emissorDocumento] => RECEITA FEDERAL [tipoDocumento] => RJC [nome] => - TELEFONICA BRASIL S.A. ) [15] => stdClass Object ( [codigoDocumento] => 108383949112 [emissorDocumento] => Receita Estadual [tipoDocumento] => RJC [nome] => Telefônica Brasil S.A. ) [16] => stdClass Object ( [codigoDocumento] => 35300158814 [emissorDocumento] => nire [tipoDocumento] => RJC [nome] => Telefonica Brasil S/A ) [17] => stdClass Object ( [codigoDocumento] => 621904680045 [emissorDocumento] => Secretaria da Receita Estadual [tipoDocumento] => RJC [nome] => Secretario Receita Estadual ) ) [endereco] => Array ( [0] => stdClass Object ( [logradouro] => RUA LEVINDO LOPES [numero] => 258 [bairro] => SAVASSI [cidade] => BELO HORIZONTE [estado] => MG [cep] => 30140170 ) ) [nome] => TELEFONICA BRASIL S.A. [dataNascimento] => 19980604 [numeroDocumentoPrincipal] => 02558157000016 [tipoPessoa] => juridica ) [advogado] => Array ( [0] => stdClass Object ( [endereco] => Array ( [0] => stdClass Object ( [logradouro] => Avenida Engenheiro Luiz Carlos Berrini, 1376 [numero] => 1376 [complemento] => [bairro] => Cidade Monções [cidade] => SãO PAULO [estado] => SP [cep] => 04571936 ) ) [nome] => LUCIANA PORTELA ANUNCIACAO [inscricao] => MG0106790A [numeroDocumentoPrincipal] => 01284876667 [intimacao] => [tipoRepresentante] => A ) ) [assistenciaJudiciaria] => [intimacaoPendente] => 0 )
$client = new BeSimpleSoapClient('https://pjerecursal.tjmg.jus.br/pje/intercomunicacao?wsdl', $options);

try {
$response = $client->consultarProcesso(array(
                        "idConsultante" => "xxxxxx",
            "senhaConsultante" => "xxxxxx",
            "numeroProcesso" => "5014522-37.2018.8.13.0079",
            "movimentos" => 1
));
print_r($response);

总而言之,我想知道处理我得到的响应的最佳方法,所以我可以隔离一些答案。

我不知道如何更好地访问每个属性,因为我能想到的唯一方法是:

$response->processo->dadosBasicos->polo['0']->parte['0']->pessoa->nome.

我需要一些方法让它更清洁、更好、更高效。

谢谢

标签: phpweb-services

解决方案


推荐阅读