Jump to content

Search the Community

Showing results for tags 'wsdl'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 9 results

  1. Bom dia, estou tentando criar uma integração a um webservice utilizando o seguinte link do serviço: https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl Para tanto, fiz o seguinte código-teste: <?php $client = new SoapClient("https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl"); $function = "consultarProcesso"; $arguments = array ( "idConsultante" => "xxx", "senhaConsultante" => "xxx", "numeroProcesso" => "50243604120198130702", "movimentos" => true ); $result = $client->__soapCall($function, $arguments); print $result; ?> Contudo, ao executar o código, recebo o seguinte erro: Fatal error: Uncaught SoapFault exception: [soap:Client] Message part param1 was not recognized. (Does it exist in service WSDL?) in C:\xampp\htdocs\wstest\test.php:13 Stack trace: #0 C:\xampp\htdocs\wstest\test.php(13): SoapClient->__soapCall('consultarProces...', Array) #1 {main} thrown in C:\xampp\htdocs\wstest\test.php on line 13 Se alguém puder me ajudar, agradeço muito!!
  2. Preciso consumir um web service soap (wsdl) com certificado digital mas não estou a conseguir. Testei através do SoapUI e resultou sem erros, mas na hora de aplicar num script de php, não estou a conseguir que funcione. O que fiz até ao momento: converti o certificado digital de .pfx para .pem com chave privada incluída e procurei executar o script com os parâmetros de conexão e xsd de saída. Na documentação consta este xsd de saída: A resposta, se com erro, deverá ser: Resposta sem erro: O meu script: <?php date_default_timezone_set("America/Fortaleza"); $time = new DateTime; $data = $time->format(DateTime::ATOM); $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl'; $endpoint = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo'; $certificate = "certificado.pem"; $password = 'senha'; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE, array('versao' => '1.12', 'dataHora' => $data, 'ambiente' => '2', 'codigoServentia' => '000123', 'nomePessoa' => 'Nome de Teste', 'tipoDocumento' => '1', 'idSolicitacaoSelo' => '1', 'sequencial' => '1', 'codigo' => '6', 'quantidade' => '10' ) ); try { $soapClient = new SoapClient($wsdl, $options); } catch(Exception $e) { var_dump($e); } O erro que tenho recebido: Onde estarei errando?
  3. Boa noite, estou tentando enviar com PHP SOAP o XML de um lote RPS assinado para o Web Service da Betha também conhecido como Fly e-nota. No entanto, não tenho tido nenhum retorno quanto a se deu algum erro ou algo do tipo. Documentação https://e-gov.betha.com.br/e-nota-test/ambienteteste.faces Ambiente Teste Webservice https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps?wsdl https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl Layout https://e-gov.betha.com.br/e-nota/manuais/layout.pdf Modelo Conceitual http://www.abrasf.org.br/arquivos/files/NFSE-NACIONAL_Modelo_Conceitual versao 2-02.pdf Manual de Integração ABRASF http://www.abrasf.org.br/arquivos/files/NFSE-NACIONAL_Manual_De_Integracao versao 2-02.pdf Tem uma opção na área administrativa Fly e-nota para solicitar a prefeitura autorização para impressão de RPS tanto manual como eletrônica. Não sei se isso é obrigatório ou se é necessário para o meu objetivo. Parte do código para o envio: ------------------------------ function transmiteRps($xmlAssinado,$certificadoPem,$senha){ $wsdl = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps?wsdl'; $endpoint = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps'; $certificate = $certificadoPem; $password = $senha; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE ); try { $client = new SoapClient($wsdl, $options); $function = 'EnviarLoteRpsEnvio'; $arguments = ['EnviarLoteRpsEnvio' => ['xml'=>$xmlAssinado]]; $options = []; $result = $client -> __soapCall($function, $arguments, $options); } catch(Exception $e){ $result = false; } if($result!==false){ return xml2array($result->return); }else{ return false; } }//transmiteRps ---------------------------------------------------------- function xml2array($xmlstring){ $xml = simplexml_load_string($xmlstring); $json = json_encode($xml); $array = json_decode($json, TRUE); return $array; } ----------------------------------------------- function consultaRps($cnpj, $inscricao, $protocolo, $certificadoPem, $senha){ $wsdl = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl'; $endpoint = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps'; $certificate = $certificadoPem; $password = $senha; $xml = '<?xml version="1.0" encoding="utf-8"?> <ConsultarLoteRpsEnvio xmlns="http://www.betha.com.br/e-nota-contribuinte-test-ws"> <Prestador> <CpfCnpj> <Cnpj>'.$cnpj.'</Cnpj> </CpfCnpj> <InscricaoMunicipal>'.$inscricao.'</InscricaoMunicipal> </Prestador> <Protocolo>'.$protocolo.'</Protocolo> </ConsultarLoteRpsEnvio>'; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE ); try { $client = new SoapClient($wsdl, $options); $function = 'consultarLoteRps'; $arguments = ['consultarLoteRps' => ['xml'=>$xml]]; $options = []; $result = $client -> __soapCall($function, $arguments, $options); } catch(Exception $e){ $result = false; } if($result!==false){ return $result->return; }else{ return false; } } //consultaRps -------------------------------- $certificadoPem=dirname(__FILE__).'/certificado.pem'; $senha='xxxxx'; //senha do certificado ---------------------------------- //assina RPS $xmlAssinado=assinaRps(dirname(__FILE__).'/only_rps.xml'); //usei para assinar só a RPS file_put_contents(dirname(__FILE__).'/rps_temp/rps1.xml','<?xml version="1.0" encoding="utf-8"?> <EnviarLoteRpsEnvio xmlns="https://e-gov.betha.com.br/e-nota-contribuinte-test-ws"><LoteRps Id="LOTE1"><NumeroLote>1</NumeroLote><Cnpj>xxxxxxxxxxxxxx</Cnpj><InscricaoMunicipal>xxxx</InscricaoMunicipal><QuantidadeRps>1</QuantidadeRps> <ListaRps>'.str_replace('<?xml version="1.0" encoding="utf-8"?>','',$xmlAssinado).'</ListaRps></LoteRps></EnviarLoteRpsEnvio>'); $_SESSION['nome_uri']='LOTE1'; $xmlAssinado=assinaRps(dirname(__FILE__).'/rps_temp/rps1.xml'); //usei para assinar o Lote RPS $resultado=transmiteRps($xmlAssinado, $certificadoPem, $senha); if(!empty($resultado["Protocolo"])){//se tem protocolo e sucesso //$resultado["NumeroLote"] //$resultado["Protocolo"] //consulta lote e pega nfse $nfseResposta = consultaRps('xxxxxxxxxxxxx', //cnpj 'xxxx', //inscrição municipal $resultado["Protocolo"], $certificadoPem, $senha); if($nfseResposta!==false){ echo '<textarea cols="120" rows="70">'; echo $nfseResposta; echo '</textarea>'; }else{ echo 'Erro ao consultar RPS'; } }else{ echo "erro no envio"; } Vídeo Tutorial do código NFSe acima porém para outro webservice que não é da Betha. https://www.youtube.com/watch?v=v1rByVX1_FY Desde já agradeço a atenção e colaboração dos colegas. Funcionando postarei aqui a solução com o código completo para quem precisar.
  4. Estou tendo problemas com array em php. Eu preciso enviar um xml via soap para o webservice com alguns itens do produto, mas uma tag está me trazendo dúvidas. O manual wsdl tem um xml como este: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.edei.correios.com.br/"> <soapenv:Header/> <soapenv:Body> <ser:solicitarCodigoEtiquetaInternacional> <!--Optional:--> <xml> <remessa> <idioma>PT</idioma> <encomendas> <encomenda> <cartaoDePostagem>0061962740</cartaoDePostagem> <codigoControleCliente>100052202</codigoControleCliente> <nomeRemetente>magento.COM</nomeRemetente> <enderecoRemetente>Street Test</enderecoRemetente> <numeroEnderecoRemetente>2017</numeroEnderecoRemetente> <complementoEnderecoRemetente></complementoEnderecoRemetente> <codigoPostalRemetente>83642</codigoPostalRemetente> <cidadeRemetente>MERIDIAN</cidadeRemetente> <estadoRemetente>ID</estadoRemetente> <paisRemetente>US</paisRemetente> <emailRemetente>sales@bodybuilding.com</emailRemetente> <telefoneRemetente></telefoneRemetente> <siteRemetente>www.bodybuilding.com</siteRemetente> <nomeDestinatario>Junior Maia</nomeDestinatario> <tipoDocumentoDestinatario>1</tipoDocumentoDestinatario> <numeroDocumentoDestinatario>16549651468</numeroDocumentoDestinatario> <enderecoDestinatario>Street Test</enderecoDestinatario> <numeroEnderecoDestinatario>S/N</numeroEnderecoDestinatario> <complementoEnderecoDestinatario>Test</complementoEnderecoDestinatario> <codigoPostalDestinatario>70680506</codigoPostalDestinatario> <caixaPostalDestinatario></caixaPostalDestinatario> <cidadeDestinatario>Curitiba</cidadeDestinatario> <ufDestinatario>PR</ufDestinatario> <paisDestinatario>BR</paisDestinatario> <emailDestinatario>comoquepode@gmail.com</emailDestinatario> <telefoneDestinatario></telefoneDestinatario> <pesoObjeto>150</pesoObjeto> <comprimentoObjeto>16</comprimentoObjeto> <larguraObjeto>11</larguraObjeto> <alturaObjeto>2</alturaObjeto> <modalidadeDistribuicaoObjeto>33375</modalidadeDistribuicaoObjeto> <modalidadePagamentoImpostosObjeto>1</modalidadePagamentoImpostosObjeto> <codigoMoeda>USD</codigoMoeda> <valorFreteObjeto>50.00</valorFreteObjeto> <valorSeguroObjeto>0.00</valorSeguroObjeto> <modoDevolucaoObjeto>1</modoDevolucaoObjeto> <seguroDevolucaoObjeto>N</seguroDevolucaoObjeto> <itensEncomenda> <itemEncomenda> <codigoSHItem>100190</codigoSHItem> <codigoSKUItem>TYH820040</codigoSKUItem> <descricaoItem>BPI SPORTS BLOX - 110 SERVINGS - BLUEBERRY</descricaoItem> <quantidadeItem>1</quantidadeItem> <valorUnitario>100.00</valorUnitario> <pesoUnitario></pesoUnitario> </itemEncomenda> <itemEncomenda> <codigoSHItem>100191</codigoSHItem> <codigoSKUItem>TYH820041</codigoSKUItem> <descricaoItem>BPI SPORTS BLOX - 110 SERVINGS - WHITE</descricaoItem> <quantidadeItem>1</quantidadeItem> <valorUnitario>100.00</valorUnitario> <pesoUnitario></pesoUnitario> </itemEncomenda> <itemEncomenda> <codigoSHItem>100192</codigoSHItem> <codigoSKUItem>TYH820042</codigoSKUItem> <descricaoItem>BPI SPORTS BLOX - 110 SERVINGS - RED</descricaoItem> <quantidadeItem>1</quantidadeItem> <valorUnitario>100.00</valorUnitario> <pesoUnitario></pesoUnitario> </itemEncomenda> </itensEncomenda> </encomenda> </encomendas> </remessa>]]> </xml> </ser:solicitarCodigoEtiquetaInternacional> </soapenv:Body> Observe que a tag <itemEncomenda> se repete dependendo de quantos produtos o pedido possui, e é exatamente isso que não consigo alimentar no php. Estou usando o StdClass para montar um array com as posições solicitadas no exemplo e montar o xml com o SoapVar, está funcionando para todas as tags, mas para itemEncomendanão! Por exemplo, eu tenho 4 itens na ordem, apenas o último está escrito na tag <itemEncomenda>, os outros não aparecem. Imagino que isso aconteça porque um índice itemEncomenda é criado na matriz e ele sobrescreve as posições antigas. Eu realmente não sei como montar uma matriz repetindo essa tag. Aqui meu código para montar o xml com StdClasse montar o xml: $var = new StdClass; $var->xml = new stdClass; $var->xml->remessa = new stdClass; $var->xml->remessa->idioma = $this->idioma; $var->xml->remessa->encomendas = new stdClass; $var->xml->remessa->encomendas->encomenda = new stdClass; //remetende $var->xml->remessa->encomendas->encomenda->cartaoDePostagem = $this->cartao_postagem; $var->xml->remessa->encomendas->encomenda->codigoControleCliente = ''; $var->xml->remessa->encomendas->encomenda->nomeRemetente = $this->remetente_nome; $var->xml->remessa->encomendas->encomenda->enderecoRemetente = $this->remetente_rua; $var->xml->remessa->encomendas->encomenda->numeroEnderecoRemetente = $this->remetente_numero; $var->xml->remessa->encomendas->encomenda->complementoEnderecoRemetente = $this->remetente_complemento; $var->xml->remessa->encomendas->encomenda->codigoPostalRemetente = $this->remetente_cep; $var->xml->remessa->encomendas->encomenda->cidadeRemetente = $this->remetente_cidade; $var->xml->remessa->encomendas->encomenda->estadoRemetente = $this->remetente_estado; $var->xml->remessa->encomendas->encomenda->paisRemetente = $this->remetente_pais; $var->xml->remessa->encomendas->encomenda->emailRemetente = $this->remetente_email; $var->xml->remessa->encomendas->encomenda->telefoneRemetente = $this->remetente_telefone; $var->xml->remessa->encomendas->encomenda->siteRemetente = $this->remetente_site; //destinatário customer $var->xml->remessa->encomendas->encomenda->nomeDestinatario = $customer_nome; $var->xml->remessa->encomendas->encomenda->tipoDocumentoDestinatario = '1'; //1-cpf 2-cnpj 3-passport 4-not informed $var->xml->remessa->encomendas->encomenda->numeroDocumentoDestinatario = $customer_taxvat; $var->xml->remessa->encomendas->encomenda->enderecoDestinatario = $customer_rua; $var->xml->remessa->encomendas->encomenda->numeroEnderecoDestinatario = $customer_rua_numero; $var->xml->remessa->encomendas->encomenda->complementoEnderecoDestinatario = $customer_compemento; $var->xml->remessa->encomendas->encomenda->codigoPostalDestinatario = $customer_cep; $var->xml->remessa->encomendas->encomenda->caixaPostalDestinatario = ''; $var->xml->remessa->encomendas->encomenda->cidadeDestinatario = $customer_cidade; $var->xml->remessa->encomendas->encomenda->ufDestinatario = $customer_uf; $var->xml->remessa->encomendas->encomenda->paisDestinatario = $customer_pais; $var->xml->remessa->encomendas->encomenda->emailDestinatario = $customer_email; $var->xml->remessa->encomendas->encomenda->telefoneDestinatario = $customer_telefone; //objeto $var->xml->remessa->encomendas->encomenda->pesoObjeto = ''; $var->xml->remessa->encomendas->encomenda->comprimentoObjeto = ''; $var->xml->remessa->encomendas->encomenda->larguraObjeto = ''; $var->xml->remessa->encomendas->encomenda->alturaObjeto = ''; $var->xml->remessa->encomendas->encomenda->modalidadeDistribuicaoObjeto = $this->modalidade_distribuicao_objeto; $var->xml->remessa->encomendas->encomenda->modalidadePagamentoImpostosObjeto = $this->modalidade_pagamento_imposto; $var->xml->remessa->encomendas->encomenda->codigoMoeda = $this->moeda; $var->xml->remessa->encomendas->encomenda->valorFreteObjeto = ''; $var->xml->remessa->encomendas->encomenda->valorSeguroObjeto = ''; $var->xml->remessa->encomendas->encomenda->modoDevolucaoObjeto = $this->modo_devolocao; $var->xml->remessa->encomendas->encomenda->seguroDevolucaoObjeto = $this->seguro_devolucao ; //itens $var->xml->remessa->encomendas->encomenda->itensEncomenda = new stdClass; foreach ($invoice->getAllItems() as $item){ if ($item->getOrderItem()->getParentItem()) { continue; } $item_name = $item->getName(); $item_sku = $item->getSku(); $item_id = $item->getProductId(); $item_qty = $item->getQty(); $item_price = $item->getPrice(); $_product = Mage::getModel('catalog/product')->load($item_id); $item_peso = $_product->getWeight(); $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda = new stdClass; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->codigoSHItem = ''; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->codigoSKUItem = $item_sku; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->descricaoItem = $item_name; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->quantidadeItem = $item_qty; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->valorUnitario = $item_price; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->pesoUnitario = $item_peso; } print_r($var); A saída no console é um array exatamente conforme necessário, mas com apenas 1 item, e $invoice->getAllItems()há 5! Saída do array acima: 2017-12-14T18:17:04+00:00 DEBUG (7): stdClass Object ( [xml] => stdClass Object ( [remessa] => stdClass Object ( [idioma] => PT [encomendas] => stdClass Object ( [encomenda] => stdClass Object ( [cartaoDePostagem] => 0057018901 [codigoControleCliente] => [nomeRemetente] => [enderecoRemetente] => [numeroEnderecoRemetente] => [complementoEnderecoRemetente] => [codigoPostalRemetente] => [cidadeRemetente] => [estadoRemetente] => [paisRemetente] => [emailRemetente] => [telefoneRemetente] => [siteRemetente] => [nomeDestinatario] => josué ribeiro de frança rocha [tipoDocumentoDestinatario] => 1 [numeroDocumentoDestinatario] => 69077886168 [enderecoDestinatario] => QNE 34 casa 16 Taguatinga Norte [numeroEnderecoDestinatario] => 16 [complementoEnderecoDestinatario] => Sandu Norte [codigoPostalDestinatario] => 72125340 [caixaPostalDestinatario] => [cidadeDestinatario] => Brasília [ufDestinatario] => DF [paisDestinatario] => BR [emailDestinatario] => josurbeiro@gmail.com [telefoneDestinatario] => (61) 98379-7370 [pesoObjeto] => [comprimentoObjeto] => [larguraObjeto] => [alturaObjeto] => [modalidadeDistribuicaoObjeto] => 33367 [modalidadePagamentoImpostosObjeto] => 1 [codigoMoeda] => BRL [valorFreteObjeto] => [valorSeguroObjeto] => [modoDevolucaoObjeto] => 1 [seguroDevolucaoObjeto] => 1 [itensEncomenda] => stdClass Object ( [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-preto [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Preto [quantidadeItem] => 2.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) ) ) ) ) ) ) Deveria ser assim (com 5 tags [itemEncomenda]) para montar o xml corretamente: 2017-12-14T18:17:04+00:00 DEBUG (7): stdClass Object ( [xml] => stdClass Object ( [remessa] => stdClass Object ( [idioma] => PT [encomendas] => stdClass Object ( [encomenda] => stdClass Object ( [cartaoDePostagem] => 0057018901 [codigoControleCliente] => [nomeRemetente] => [enderecoRemetente] => [numeroEnderecoRemetente] => [complementoEnderecoRemetente] => [codigoPostalRemetente] => [cidadeRemetente] => [estadoRemetente] => [paisRemetente] => [emailRemetente] => [telefoneRemetente] => [siteRemetente] => [nomeDestinatario] => josué ribeiro de frança rocha [tipoDocumentoDestinatario] => 1 [numeroDocumentoDestinatario] => 69077886168 [enderecoDestinatario] => QNE 34 casa 16 Taguatinga Norte [numeroEnderecoDestinatario] => 16 [complementoEnderecoDestinatario] => Sandu Norte [codigoPostalDestinatario] => 72125340 [caixaPostalDestinatario] => [cidadeDestinatario] => Brasília [ufDestinatario] => DF [paisDestinatario] => BR [emailDestinatario] => josurbeiro@gmail.com [telefoneDestinatario] => (61) 98379-7370 [pesoObjeto] => [comprimentoObjeto] => [larguraObjeto] => [alturaObjeto] => [modalidadeDistribuicaoObjeto] => 33367 [modalidadePagamentoImpostosObjeto] => 1 [codigoMoeda] => BRL [valorFreteObjeto] => [valorSeguroObjeto] => [modoDevolucaoObjeto] => 1 [seguroDevolucaoObjeto] => 1 [itensEncomenda] => stdClass Object ( [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-preto [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Preto [quantidadeItem] => 2.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-branco [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Branco [quantidadeItem] => 2.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-vermelho [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Vermelho [quantidadeItem] => 3.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-verde [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Verde [quantidadeItem] => 1.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-cinca [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Cinza [quantidadeItem] => 4.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) ) ) ) ) ) ) Talvez esse xml não deva ser montado com array, pois a tag itemEncomenda precisa aparecer várias vezes (de acordo com a quantidade produtos do foreach) no mesmo XML, isso significa (a meu ver) que teria que repetir o key do array com o mesmo nome, o que não é permitido no PHP. Eu tentei também criar um array conforme demonstrado abaixo, mas tropeço no mesmo problema, array com key com o mesmo nome: $soapArgs = array( 'xml' => array( 'remessa' => array( 'idioma' => 'PT', 'encomendas' => array( 'encomenda' => array( //remetende 'cartaoDePostagem' => $this->cartao_postagem, 'codigoControleCliente' => '', 'nomeRemetente' => $this->remetente_nome, 'enderecoRemetente' => $this->remetente_rua, 'numeroEnderecoRemetente' => $this->remetente_numero, 'complementoEnderecoRemetente' => $this->remetente_complemento, 'codigoPostalRemetente' => $this->remetente_cep, 'cidadeRemetente' => $this->remetente_cidade, 'estadoRemetente' => $this->remetente_estado, 'paisRemetente' => $this->remetente_pais, 'emailRemetente' => $this->remetente_email, 'telefoneRemetente' => $this->remetente_telefone, 'siteRemetente' => $this->remetente_site, //destinatário customer 'nomeDestinatario' => $customer_nome, 'tipoDocumentoDestinatario' => 1, //1-cpf 2-cnpj 3-passport 4-not informed 'numeroDocumentoDestinatario' => $customer_taxvat, 'enderecoDestinatario' => $customer_rua, 'numeroEnderecoDestinatario' => $customer_rua_numero, 'complementoEnderecoDestinatario' => $customer_compemento, 'codigoPostalDestinatario' => $customer_cep, 'caixaPostalDestinatario' => '', 'cidadeDestinatario' => $customer_cidade, 'ufDestinatario' => $customer_uf, 'paisDestinatario' => $customer_pais, 'emailDestinatario' => $customer_email, 'telefoneDestinatario' => $customer_telefone, //objeto 'pesoObjeto' => '', 'comprimentoObjeto' => '', 'larguraObjeto' => '', 'alturaObjeto' => '', 'modalidadeDistribuicaoObjeto' => '', 'modalidadePagamentoImpostosObjeto' => '', 'codigoMoeda' => '', 'valorFreteObjeto' => '', 'valorSeguroObjeto' => '', 'modoDevolucaoObjeto' => '', 'seguroDevolucaoObjeto' => '', //itens 'itensEncomenda' => array( 'itemEncomenda' => array( 'codigoSHItem' => '', 'codigoSKUItem' => '', 'descricaoItem' => '', 'quantidadeItem' => '', 'valorUnitario' => '', 'pesoUnitario' => '' ), //itemEncomenda 'itemEncomenda' => array( 'codigoSHItem' => '', 'codigoSKUItem' => '', 'descricaoItem' => '', 'quantidadeItem' => '', 'valorUnitario' => '', 'pesoUnitario' => '' ), //itemEncomenda 'itemEncomenda' => array( 'codigoSHItem' => '', 'codigoSKUItem' => '', 'descricaoItem' => '', 'quantidadeItem' => '', 'valorUnitario' => '', 'pesoUnitario' => '' ), //itemEncomenda ), //itensEncomenda ), //encomenda ), //encomendas ), //remessa ) //xml ); Percebe-se que dentro do array 'itensEncomenda' => array(várias key com itemEncomenda), e é aqui que eu não consigo achar uma solução. Talvez deveria montar o XML com XWMWrite() ou SimpleXML() mas aí eu me deparo com o problema de não conseguir colocar um XML feito na "mão" dentro de um SoapVar() para enviar no padrão correto que o webservice wsdl espera. Eu achei um cara que passou pelo mesmo problema que o meu, repetição de tag no xml, ele resolveu com ArrayObject(), mas eu não consegui aplicar no meu código: Problema igual resolvido Alguém pode me dar uma força?
  5. Bom dia!! Estou tentando via PHP, fazer uma requisição a um WebService SOAP, porém estou tendo os seguintes erros(todos no mesmo retorno, apenas separei para facilitar a leitura) SoapFault Object ( [message:protected] => The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'CancelaSMP'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [string:Exception:private] => [code:protected] => 0 [file:protected] => C:\wamp\www\ws\webservice\teste.php [line:protected] => 59 [trace:Exception:private] => Array [previous:Exception:private] => [faultstring] => The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'CancelaSMP'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [faultcode] => a:DeserializationFailed [detail] => stdClass Object ( [ExceptionDetail] => stdClass Object ( [HelpLink] => [InnerException] => stdClass Object ( [HelpLink] => [InnerException] => [Message] => End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [StackTrace] => at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3) at System.Xml.XmlBaseReader.ReadEndElement() at System.ServiceModel.Channels.Message.ReadFromBodyContentsToEnd(XmlDictionaryReader reader, EnvelopeVersion envelopeVersion) at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest) at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters) [Type] => System.Xml.XmlException ) [Message] => The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'CancelaSMP'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [StackTrace] => at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) [Type] => System.ServiceModel.Dispatcher.NetDispatcherFaultException ) ) Segue o meu codigo PHP: <?php $wsdl = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?wsdl"; $trace = true; $exceptions = false; $token = 999999999; $xml_array['token'] = $token; $xml_array['AnoSMP'] = 2016; $xml_array['NumeroSMP'] = 0; $xml = ' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:apis="http://schemas.datacontract.org/2004/07/ApisulLog.Integracao.Modelo.Chamada"> <soapenv:Body> <tem:CancelaSMP> <!--Optional:--> <tem:token>386228449</tem:token> <!--Optional:--> <tem:cancelaSMPModeloIntegracao> <!--Optional:--> <apis:AnoSMP>2016</apis:AnoSMP> <!--Optional:--> <apis:NumeroSMP>0</apis:NumeroSMP> </tem:cancelaSMPModeloIntegracao> </tem:CancelaSMP> </soapenv:Body> </soapenv:Envelope> '; print_r($xml_array); try { $client = new SoapClient($wsdl, array('trace' => $trace, 'exceptions' => $exceptions)); $response = $client->CancelaSMP($token, $xml); } catch (Exception $e) { echo "Error!"; echo $e -> getMessage (); echo 'Last response: '. $client->__getLastResponse(); } echo "<pre>"; print_r($response); echo "</pre>"; Lembrando que o conteudo de $xml foi pego diretamente do SoapUI, onde esta requisição foi feita com sucesso.
  6. patrick848

    Web Service WSDL

    Olá, Estou desenvolvendo um client para um WEB Service, porém o mesmo não envia os dados que estão no array, abaixo segue o código. $client = new SoapClient('URL DE SERVIÇO AQUI COM ?wsdl'); $function = 'EnviarLote'; $arguments = array( 'LoteExportacao' => array( 'CodigoLote' => '0', 'Tabelas' => array( 'TabelaExportacao' => array( 'Campos' => array( 'string' => 'CODIGO', 'string' => 'CODIGOVEICULO', 'string' => 'CODIGOLINHA', 'string' => 'CODIGOTABELA', 'string' => 'CODIGOJORNADA', 'string' => 'DATAEXECUCAO', 'string' => 'VIAGENS', 'string' => 'TIPOVEICULO', 'string' => 'DESCRICAO', ), 'Descricao' => 'LINHASTABELAIMP', 'Registros' => array( 'RegistroTabela' => array( 'Valores' => array( 'ValorCampo' => array( 'Sequencia' => '0', 'Valor' => '1157955' ), 'ValorCampo' => array( 'Sequencia' => '1', 'Valor' => '4810' ), 'ValorCampo' => array( 'Sequencia' => '2', 'Valor' => 'U100' ), 'ValorCampo' => array( 'Sequencia' => '3', 'Valor' => '001' ), 'ValorCampo' => array( 'Sequencia' => '4', 'Valor' => '01' ), 'ValorCampo' => array( 'Sequencia' => '5', 'Valor' => '2016-09-09' ), 'ValorCampo' => array( 'Sequencia' => '6', 'Valor' => '14' ), 'ValorCampo' => array( 'Sequencia' => '7', 'Valor' => 'ONIBUS' ), 'ValorCampo' => array( 'Sequencia' => '8', 'Valor' => 'RODOVIARIA' ) ) ) ) ) ) ) ); $options = array('location' => 'URL DE SERVIÇO AQUI'); $resultado = $client->__soapCall($function, $arguments, $options); echo 'Retorno da chamada: '; print_r($resultado); ?> Esse script só envia a função que é enviarlote e o webservice acaba por responder que o objeto do lote está vazio. O que devo fazer?
  7. RAFAEL HENRIQUE DE SOUZA

    [Resolvido] Comunicação soap wsdl

    Boa tarde pessoal, sou novo aqui, então desculpe se minha dúvida não for explanada conforme orientação do fórum. Estou precisando consumir uma solução de segurança via SOAP, estou utilizando a biblioteca nusoap.php, fiz as chamadas conforme exemplos que achei. Me parece que ele comunica e trás o modelo xml, porem exibe a seguinte mensagem: wsdl error: XML error parsing WSDL from https://homologacao....scAdminWS?wsdl on line 1: Not well-formed (invalid token) Não achei mais nada sobre este erro. Para ajudar a entender o que fiz segue abaixo o código: _____________________________________________________________________________________ include ('lib/nusoap.php'); $username = 'user'; $password = 'pass'; $useCURL = isset($_POST['usecurl']) ? $_POST['usecurl'] : '0'; $proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : 'proxy'; $proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '8080'; $client = new nusoap_client("https://homologacao.../SscAdminWS?wsdl", 'wsdl', $proxyhost, $proxyport); $err = $client->getError(); if ($err) { echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; } //$client->setUseCurl($useCURL);; //$client->loadWSDL(); $client->setCredentials($username, $password); $result = $client->call('retornaUsuario', array('cpf'=>'123.456.789-10')); if ($client->fault) { echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '<h2>Error</h2><pre>' . $err . '</pre>'; } else { // Display the result echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>'; } } print_r($result); echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>'; echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>'; echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>'; Obrigado.
  8. cviniciussdias

    Como implementar um web service com SoapServer?

    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')));
  9. Scotshild

    WebService + Ksoap2

    Olá pessoal, estou fazendo um trabalho da faculdade que tem um webservice. acontece que inicialmente eu quero só fazer um teste pra saber se minha aplicação ta conseguindo conectar no WebService de boa. O WebService está hospedado na universidade e tem o seguinte endereço: http://sistema.unir.br:8080/wsunir/ServicosAcademicosService?wsdl A parte de teste que estou fazendo é com a função "consultar". Se eu digitar "1" o retorno deve ser "olá 1". É apenas uma função para teste. O problema é que no momento de fazer a conexão ele entra, faz a conexão, mas quando vai pegar o resultado ele não consegue e pula para o catch. Meu objeto usuario tem apenas uma string, é só pra guardar esse "Olá 1" que vai retornar... Usuario.java public class Usuario { private String msg; public Usuario(){ } public Usuario(String msg) { super(); this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String toString(){ return "Mensagem: "+ this.msg; } } Meu UsuarioDAO tem apenas a função de consultar UsuarioDAO.java import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.util.Log; public class UsuarioDAO { private static final String URL = "http://sistema.unir.br:8080/wsunir/ServicosAcademicosService?wsdl"; private static final String NAMESPACE = "http://ws.unir.br/"; private static final String CONSULTAR = "consultar"; public Usuario consultar(String id){ Usuario usr=null; SoapObject buscarUsuario = new SoapObject(NAMESPACE, CONSULTAR); buscarUsuario.addProperty("id", id); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(buscarUsuario); envelope.implicitTypes = true; HttpTransportSE http = new HttpTransportSE(URL); try { http.call("urn:" + CONSULTAR, envelope); //PASSOU DO HTTP.CALL SoapObject resposta = (SoapObject) envelope.getResponse(); //AQUI ELE NÃO PASSOU E FOI PARA O CATCH usr = new Usuario(); usr.setMsg(resposta.getProperty(0).toString()); } catch (Exception e) { usr = new Usuario(); usr.setMsg("Falha na Conexão"); e.printStackTrace(); //return null; } return usr; } } O MainActivity só mostra o que deu de resposta... Em user = dao.consultar("1"); eu estou enviando esse 1 porque quero obter a resposta "Olá 1" MainActivity.java import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Usuario user = new Usuario(); UsuarioDAO dao = new UsuarioDAO(); user = dao.consultar("1"); TextView view = new TextView(this); view.setText(user.getMsg()); setContentView(view); } } Por favor pessoal, me ajudem aí eu nao sei porque ele não está obtendo essa resposta do WebService. Já tentei muito resolver e não consegui. Em XML, a resposta obtida é essa: <?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <S:Body> <ns2:consultarResponse xmlns:ns2="http://ws.unir.br/"> <return>Olá 1</return> </ns2:consultarResponse> </S:Body> </S:Envelope> Obs.: biblioteca ksoap2 instalada perfeitamente e funcionando. Obs.2.: Realizei testes do WebService com o SoapUI e sim, ele está funcionando. O stack está acusando nullPointerException, mas não sei o porquê. Sei que a minha aplicação é Android, mas meu problema é intrínseco com Java. Por favor, me ajudem.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.