Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ronaldosdb

Chamada Soap com Php SoapClient

Recommended Posts

Pessoal, boa tarde

 

Por favor, podem me dizer como faco para mapear um objeto stdClass?

 

Estou fazendo conexxao com um webservice via php e preciso armazenar os valores em variaveis

 

Consegui fazer a conexao e dar um print_r no $result

$client = new SoapClient('http://www.dominio.asmx?WSDL');
 
$function = 'recuperarSolicitacao';
 
$arguments= array('recuperarSolicitacao' => array(
                        'login'   => 'user',
                        'senha'      => 'senha',
                        'urlCliente'        => $_REQUEST["urlcliente"],
						 'nroSolic'        => $_REQUEST["nroSolic"]));
						 
$options = array('location' => 'http://www.dominio.asmx');
 
$result = $client->__soapCall($function, $arguments, $options);
 
// Convert object to array
$resultado = (array)$result;

print_r($resultado);

Entretanto, nao sei como resgatar (guardar em variaveis) os resultados.

 

Podem me dar um exemplo pratico de como fazer isso, please?

 

A saida;

Array
(
    [recuperarSolicitacaoResult] => stdClass Object
        (
            [SolicitacaoId] => 90898200-ca42-e511-9404-90b11c25f027
            [NroSolic] => 101
            [StatusViagem] => FAT
            [StatusDespesa] => EMI
            [Agencia] => 4BTS
            [AgenciaCod] => 99980
            [Solicitante] => stdClass Object
                (
                    [NomeCompleto] => EDER SILVA
                    [Email] => 0b33062c-117f-474e-86c0-cd39fa46ce13@email.com
                    [Login] => 0b33062c-117f-474e-86c0-cd39fa46ce13
                    [Sexo] => M
                    [Terceiro] => 
                )

            [Viajante] => stdClass Object
                (
                    [NomeCompleto] => CARLOS ANTONIO ABRANTES
                    [Email] => 3e9d2ff5-fd2e-451b-9066-06755702e9c7@email.com
                    [Login] => 3e9d2ff5-fd2e-451b-9066-06755702e9c7
                    [Sexo] => M
                    [Terceiro] => 1
                )

            [Atendente] => stdClass Object
                (
                    [NomeCompleto] => CONSUELO BURGOS
                    [Departamento] => 
                    [CodIntegracao] => 0005;378.6;02;RIO
                    [Email] => consultor9@4bts.com.br
                    [Login] => consuelo
                    [Sexo] => F
                    [Telefone] => 
                    [Celular] => (21)9957-38077
                    [Fax] => 
                    [Terceiro] => 
                    [Banco] => 
                    [Agencia] => 
                    [Conta] => 
                )

            [TipoViagem] => N
            [ViagemReembolsada] => 
            [Pais] => BR
            [MotivoViagem] => NEGOCIOS
            [MotivoViagemDados] => stdClass Object
                (
                    [MotivoId] => 0ce96572-e5d4-4f9a-9e70-74fd135719cb
                    [Descricao] => NEGOCIOS
                    [ObrigaDescricao] => 
                    [ObrigaAutorizacao] => 
                    [PossuiCota] => 
                    [PermiteAcompanhante] => 1
                    [ValidaPrestacao] => 
                    [TrechosPermitidos] => 127
                    [DataInicial] => 2015-07-21T18:56:40.833
                    [DataFinal] => 
                )

            [Observacao] => DUPLO TWIN
FATURAR DIARIAS E EXTRAS EXCETO BEBIDAS ALCOOLICOS
            [DataIniViagem] => 2015-08-18T14:00:00
            [DataFimViagem] => 2015-08-21T12:00:00
            [DataExpiracao] => 2015-08-17T14:00:00
            [DataCotacao] => 2015-08-14T18:18:27.7
            [DataEmissao] => 2015-08-14T18:20:59.803
            [DataEscolha] => 2015-08-14T18:18:36.6
            [DataSolicitacao] => 2015-08-14T18:18:27.7
            [DataAprovacaoMerito] => 2015-08-14T18:18:27.7
            [DataAprovacaoCusto] => 2015-08-14T18:19:03.837
            [DataConferenciaReembolso] => 
            [DataAprovacaoReembolso] => 
            [DataPagtoReembolso] => 
            [DataCancelamentoViagem] => 
            [DataCreditoAdiantamento] => 
            [Emissor] => stdClass Object
                (
                    [NomeCompleto] => CONSUELO BURGOS
                    [CodIntegracao] => 0005;378.6;02;RIO
                    [Email] => consultor9@4bts.com.br
                    [Login] => consuelo
                    [Sexo] => F
                    [Telefone] => 
                    [Celular] => (21)9957-38077
                    [Fax] => 
                    [Terceiro] => 
                )

            [SolicitacaoIdPai] => 
            [NroSolicPai] => 
            [SolicitacoesFilhas] => stdClass Object
                (
                )

            [ValorViagem] => 
            [SolAprovacao] => stdClass Object
                (
                    [AprovacaoRS] => stdClass Object
                        (
                            [Aprovador] => stdClass Object
                                (
                                    [NomeCompleto] => CARLOS ANTONIO ABRANTES
                                    [Email] => 3e9d2ff5-fd2e-451b-9066-06755702e9c7@email.com
                                    [Login] => /cbv/3e9d2ff5-fd2e-451b-9066-06755702e9c7
                                    [Sexo] => M
                                    [Terceiro] => 1
                                )

                            [AprovadorReal] => stdClass Object
                                (
                                    [NomeCompleto] => CONSUELO BURGOS
                                    [Departamento] => 
                                    [CodIntegracao] => 0005;378.6;02;RIO
                                    [Email] => consultor9@4bts.com.br
                                    [Login] => consuelo
                                    [Sexo] => F
                                    [Telefone] => 
                                    [Celular] => (21)9957-38077
                                    [Fax] => 
                                    [Terceiro] => 
                                )

                            [Aprovacao] => 1
                            [DataAprovacao] => 2015-08-14T18:19:03.803
                        )

                )

            [SolHospedagemSolicitado] => stdClass Object
                (
                    [HospedagemSolicitadoRS] => stdClass Object
                        (
                            [Id] => 1
                            [OnLine] => 1
                            [DataEntrada] => 2015-08-18T14:00:00
                            [DataSaida] => 2015-08-21T12:00:00
                            [Hotel] => 
                            [Cidade] => Maceio
                            [TipoApto] => Online
                            [TipoCama] => Não disponível
                            [Acompanhante] => stdClass Object
                                (
                                    [NomeCompleto] => VINICIUS SALABERT
                                    [Email] => 74b3ff80-ec5b-4342-ad88-d54e344e7653@email.com
                                    [Login] => 74b3ff80-ec5b-4342-ad88-d54e344e7653
                                    [Sexo] => M
                                    [Terceiro] => 1
                                )

                            [Observacao] => 
                            [DataCancelamento] => 
                        )

                )

            [SolHospedagemCotado] => stdClass Object
                (
                    [HospedagemCotadoRS] => stdClass Object
                        (
                            [Id] => 1
                            [CotacaoId] => 8
                            [OnLine] => 
                            [HotelDados] => stdClass Object
                                (
                                    [Cidade] => Maceio
                                    [WebServiceId] => CMNET
                                    [CodIntegracao] => 158529
                                    [Nome] => MACEIO MAR HOTEL
                                    [Endereco] => AV. ALVARO OTACILIO,2991  PONTA VERDE
                                    [Bairro] => 
                                    [CEP] => 57035180
                                    [Telefone] => 21228002
                                    [Email] => 
                                    [Site] => 
                                    [Latitude] => 
                                    [Longitude] => 
                                    [ISS] => 
                                    [TaxaTurismo] => 
                                    [TaxaServico] => 
                                    [Cafe] => 1
                                    [Amenidades] => 
                                    [Estrelas] => 4
                                )

                            [Hotel] => MACEIO MAR HOTEL
                            [Cidade] => Maceio
                            [Estado] => AL
                            [Localizacao] => 
                            [Pais] => BR
                            [Faturamento] => stdClass Object
                                (
                                    [Descricao] => FATURADO (Alterado?)
                                    [Tipo] => F
                                    [Aereo] => 1
                                    [Hospedagem] => 1
                                    [Locacao] => 1
                                )

                            [QtdDiaria] => 3
                            [Moeda] => BRL
                            [MoedaCodigoBacen] => 790
                            [ValorTotal] => 861
                            [ValorTotalAprovado] => 861
                            [WebService] => CMNET
                            [Observacao] => LUXO EXECUTIVO
DUPLO TWIN
FATURAR DIARIAS E EXTRAS EXCETO BEBIDAS ALCOOLICOS
                            [Voucher] => 113910098
                            [DataVoucher] => 2015-08-14T00:00:00
                            [DataCancelamento] => 
                            [TipoCama] => Não disponível
                            [ValorDiariaMais] => 0
                            [ValorDiariaMenos] => 0
                            [PercDiariaMais] => 0
                            [PercDiariaMenos] => 0
                            [PercTotalMais] => 0
                            [PercTotalMenos] => 0
                            [FeesTrecho] => stdClass Object
                                (
                                )

                        )

                )

            [SolRateio] => stdClass Object
                (
                    [RateioRS] => stdClass Object
                        (
                            [CodCentroCusto] => CONFEDERAÇÃO BRASILEIRA DE V
                            [DescCentroCusto] => CONFEDERAÇÃO BRASILEIRA DE VOLEIBOL
                            [Empresa] => CONFEDERAÇÃO BRASILEIRA DE VOLEIBOL
                            [EmpresaCod] => 1732
                            [Percentual] => 100.00
                            [EmpresaRef] => 
                        )

                )

            [SolResumo] => stdClass Object
                (
                    [ResumoRS] => stdClass Object
                        (
                            [Tipo] => Hospedagem
                            [Id] => 1
                            [CotacaoId] => 8
                            [Voucher] => 113910098
                            [ValorTotal] => 861.0000
                            [ValorMaior] => 0
                            [ValorMedio] => 0
                            [ValorMenor] => 0
                            [Quantidade] => 1
                        )

                )

            [SolCampo] => stdClass Object
                (
                    [CamposGerenciaisRS] => stdClass Object
                        (
                            [Campo] => fbts_AGENTECONSOLIDADOR
                            [Conteudo] => FOUR BUSINESS
                        )

                )

            [JustificativasViagem] => stdClass Object
                (
                )

            [FeesSolicitacao] => stdClass Object
                (
                )

        )

)


Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi com o



function obj2array($obj) {
  $out = array();
  foreach ($obj as $key => $val) {
    switch(true) {
        case is_object($val):
         $out[$key] = obj2array($val);
         break;
      case is_array($val):
         $out[$key] = obj2array($val);
         break;
      default:
        $out[$key] = $val;
    }
  }
  return $out;
}

$response = obj2array($resultado);

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por GuilhermeDias
      Bom dia, estou com muita dificuldade para enviar um XML de Request para o SoupClient.
       
      XML DE REQUEST - ORIGINAL DA CONSULTA
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.consulta.spcjava.spcbrasil.org/">    <soapenv:Header/>    <soapenv:Body>       <web:filtro>          <codigo-produto>325</codigo-produto>          <tipo-consumidor>F</tipo-consumidor>          <documento-consumidor>00752477714</documento-consumidor>       </web:filtro>    </soapenv:Body> </soapenv:Envelope> NO PROGRAMA SOUPUI FUNCIONA BEM, ME TRAZ O RETORNO DE XML CORRETO.
      AGORA NO PHP NÃO CONSIGO DE NENHUMA MANEIRA.
       
      TENTEI ASSIM, DEU ERRO
      <?php $webserviceURL = "https://treina.spc.org.br/spc/remoting/ws/consulta/consultaWebService?wsdl"; $client = new SoapClient($webserviceURL, array("login"=>"XXXX","password"=>"XXXX")); $xml = '<?xml version=""1.0"" encoding=""utf-8""?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.consulta.spcjava.spcbrasil.org/">    <soapenv:Header/>    <soapenv:Body>       <web:filtro>          <codigo-produto>325</codigo-produto>          <tipo-consumidor>F</tipo-consumidor>          <documento-consumidor>00752477714</documento-consumidor>       </web:filtro>    </soapenv:Body> </soapenv:Envelope>'; echo "<pre>"; print_r($client->consultar($xml));  echo "</pre>"; ?> TENTEI ASSIM, DEU ERRO TAMBEM
      <?php     $webserviceURL = "https://treina.spc.org.br/spc/remoting/ws/consulta/consultaWebService?wsdl";     $client = new SoapClient($webserviceURL, array("login"=>"XXX","password"=>"XXX"));     $function = 'Consultar';     $s1 = '325';     $s2 = 'F';     $s3 = '00752477714';     $arguments= array('ns1:filtro' => array('codigo-produto' => ''.$s1 .'','tipo-consumidor' => ''.$s2 .'','documento-consumidor' => ''.$s3 .''));     $result = $client->__soapCall($function, $arguments);     $txt = SimpleXML_Load_String($result);     echo 'Response: ';     print_r($arguments); ?>
       
    • Por Ellen Diana Guissoni
      olá pessoal,

      estou instanciando uma funcão para este webservice, mas não está dando certo.
      O q eu estou fazendo de errado?

      alguem poderia me ajudar ?

      $client = new SoapClient('http://rondap.ura.uniube.br:8050/g5-senior-services/ronda_Synccom_senior_g5_rh_hr_relatorios?wsdl' true); $relIn = array( 'prRelatorio' => 'HRCP103.APU', 'prExecFmt' => 'tefFile', 'prDir' => $_SERVER['DOCUMENT_ROOT'].'/servicos/arquivos/', 'prFileName' => 'arquivo_20161122', 'prFileExt' => 'PDF', 'prSaveFormat' => 'tsfPDF', 'prEntrada' => '<EDatInR=18/08/2016><EDatFiR=17/09/2016><ELisDem=S><EMarAfa=S><EMarFol=S><EHorasAfastadas=S><EAbrGpe=N><EAbrEmp=1><EAbrTcl=1><EAbrCad=19430>', 'prEntranceIsXML' => 'F', 'prLOG' => 'T' ); $arguments = array( 'user' => '*******', 'password' => '*******', 'encryption' => 0, 'parameters' => $relIn ); $result = $client->Relatorios($arguments); return $result->RelatoriosResponse;
    • Por ghlevin
      Encontrei esse exemplo de envio de XML com o Soapclient. Funciona perfeitamente: <?php $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL'); $function = 'ConvertTemp'; $arguments= array('ConvertTemp' => array( 'Temperature' => 31, 'FromUnit' => 'degreeCelsius', 'ToUnit' => 'degreeFahrenheit' )); $options = array('location' => 'http://www.webservicex.net/ConvertTemperature.asmx'); $result = $client->__soapCall($function, $arguments, $options); echo 'Response: '; print_r($result); ?> Só que eu gostaria de usar esses mesmos métodos do Soapclient, mas pra um XML puro como entrada. Nesse caso, acho que ele é:
      <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>31</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap:Body> </soap:Envelope> Alguém sabe como se faz? Estou usando esse exemplo existente como base pra uma aplicação que estou desenvolvendo e que envolve um XML com uma estrutura maior que essa e com maior número de parâmetros.
    • Por ghlevin
      Encontrei esse exemplo de envio de XML com o Soapclient. Funciona perfeitamente: <?php $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL'); $function = 'ConvertTemp'; $arguments= array('ConvertTemp' => array( 'Temperature' => 31, 'FromUnit' => 'degreeCelsius', 'ToUnit' => 'degreeFahrenheit' )); $options = array('location' => 'http://www.webservicex.net/ConvertTemperature.asmx'); $result = $client->__soapCall($function, $arguments, $options); echo 'Response: '; print_r($result); ?> Só que eu gostaria de usar esses mesmos métodos do Soapclient, mas pra um XML puro como entrada. Nesse caso, acho que ele é:
      <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>31</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap:Body> </soap:Envelope> Alguém sabe como se faz? Estou usando esse exemplo existente como base pra uma aplicação que estou desenvolvendo e que envolve um XML com uma estrutura maior que essa e com maior número de parâmetros.
    • Por cviniciussdias
      Eu gostaria de saber como posso implementar os métodos de uma classe para utilizá-la com SoapServer.
      A seguinte classe de exemplo funciona:

      <?phpclass WebService { private $message; public function writeMessage($message) { $this->message = $message->message; return array("mensagem" => $this->message); } public function hW() { return array("mensagem" => "Hello world"); }} Mas, eu preciso retornar sempre um array?
      E, os parâmetros não podem ser separados? Sempre têm que vir no formato de objeto?
       
      E, eu também gostaria de saber se alguém conhece alguma ferramenta que gera o arquivo wsdl, pois até agora não encontrei nenhuma que funcione.
       
      Muito obrigado desde já!
       
       
      PS.: A Classe acima foi usada com:

      <?php require('WebService.class.php'); $server = new SoapServer('meu.wsdl'); $server->setClass('WebService'); $server->handle(); e acessada com:

      <?php$client = new SoapClient('meu.wsdl');var_dump($client->hW());var_dump($client->writeMessage(array('message' => 'Texto a ser retornado')));
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.