Jump to content

Search the Community

Showing results for tags 'soap'.



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 34 results

  1. Boa noite galera, será que tem alguem que possa me dar uma força com webservices, eu preciso acessar este webservice https://servicoshm.saude.gov.br/cnes/ProfissionalSaudeService/v1r0?wsdl é somente a 2º vez que estou trabalhando com webservice, da outra vez que trabalhei era para acessar o webservice dos correios para calcular o frete, então peguei o codigo e meio que tentei utiliza-lo, mas nao deu certo, o codigo é esse ai <?php include "lib/nusoap.php"; $cliente = new nusoap_client('https://servicoshm.saude.gov.br/cnes/ProfissionalSaudeService/v1r0?wsdl', true); $headers = ' <soap:Header> <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-5FCA58BED9F27C406E14576381084652"> <wsse:Username>CNES.PUBLICO</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">cnes#2015public</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> '; $cliente->setHeaders($headers); $parametros = array('numeroCNS' => '980016280595043'); $resultado = $cliente->call('ConsultarProfissionalSaude', $parametros); print_r($resultado); ?> nao sei se ajuda, mas o xml que o webservice recebe é esse aqui <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:prof="http://servicos.saude.gov.br/cnes/v1r0/profissionalsaudeservice" xmlns:fil="http://servicos.saude.gov.br/wsdl/mensageria/v1r0/filtropesquisaprofissionalsaude" xmlns:cns="http://servicos.saude.gov.br/schema/cadsus/v5r0/cns" xmlns:cpf="http://servicos.saude.gov.br/schema/corporativo/documento/v1r2/cpf"> <soap:Header> <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-5FCA58BED9F27C406E14576381084652"> <wsse:Username>CNES.PUBLICO</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">cnes#2015public</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <prof:requestConsultarProfissionalSaude> <fil:FiltroPesquisaProfissionalSaude> <cns:CNS> <cns:numeroCNS>980016280595043</cns:numeroCNS> </cns:CNS> </fil:FiltroPesquisaProfissionalSaude> </prof:requestConsultarProfissionalSaude> </soap:Body> </soap:Envelope> Alguem sabe como acessar esse webservice?????
  2. 7Canim

    Enviar dados via SOAP

    Bom dia Estou desenvolvendo um sistema que faça conexão com o SISBOV e algumas funções estão dando erros. Estou testando vários códigos diferentes e dão diferentes erros, mas no suapUi está funcionando normal Esse é o XML que eu preciso cadastrar <?php try { $wsdl_url = 'http://homolog.agricultura.gov.br/sisbov_ws_nova_hom/'; $client = new SOAPClient($wsdl_url); $params = array( 'usuario' => "XXXXXXXXXX", 'senha' => "XXXXXXXXXX", 'nirf' => "XXXXXXX", 'incra' => "XXXXXXXXXX", 'tipoPropriedade' => "X", 'nomePropriedade' => "XXXXXXXXXX", 'acessoFazenda' => "XXXXXXXXXX", 'distanciaSedeMunicipio' => "XXXXXXXXXX", 'orientacaoLatitude' => "X", 'grauLatitude' => "XX", 'minutoLatitude' => "XX", 'segundoLatitude' => "X", 'orientacaoLongitude' => "X", 'grauLongitude' => "XX", 'minutoLongitude' => "XX", 'segundoLongitude' => "XX", 'area' => "XXXXXXXXXX", 'logradouro' => "XXXXXXXXXX", 'bairro' => "XXXXXXXXXX", 'cep' => "XXXXXXXXXX", 'codMunicipio' => "XXXXXXXXXX", 'enderecoCorrespondenciaLogradouro' => "XXXXXXXXXX", 'enderecoCorrespondenciaBairro' => "XXXXXXXXXX", 'enderecoCorrespondenciaCep' => "XXXXXXXXXX", 'enderecoCorrespondenciaCodMunicipio' => "XXXXXXXXXX", 'telefoneResidencial' => "", 'faxResidencial' => "", 'nrTelefoneContato' => "XXXXXXXXXX", 'nrFaxContato' => "XXXXXXXXXX", ); $return = $client->incluirPropriedade($params); print_r($return); } catch (Exception $e) { echo "Exception occured: " . $e; } Tanto o incluirPropriedade como o alterarPropriedade dá errado nos 4 códigos diferentes que eu tentei. Nesse código dá o erro ERR_CONNECTION_RESET (estou usando Google Chrome) <?php ini_set("soap.wsdl_cache_enabled", "0"); // Desabilita Cache do WSDL $config['soap']['usuario']="XXXXXXXXXXXX"; //Nome do Usuario == CNPJ da Certificadora $config['soap']['senha']="XXXXXXXXXXXX"; //Senha == Senha do FTP $config['soap']['uri']="http://servicosWeb.sisbov.mapa.gov.br"; //NameSpace do WSDL $config['soap']['location']='http://homolog.agricultura.gov.br/sisbov_ws_nova_hom/';//ENDERECO DO WSDL DO WEBSERVICES $client = new SoapClient(null, array('uri' => $config['soap']['uri'], 'location' => $config['soap']['location'])); //Cria o Cliente de WebServices try { //Tente Executar a Chamada //Object incluirPropriedade(string usuario, string senha, string nirf, string incra, long TipoPropriedade, string nome, string roteiroDeAcesso, int distanciaSedeMunicipio, string orientacaoLatitude, int grauLatitude, int minutoLatitude, int segungaLatitude, string orientacaoLongitude, int grauLongitude, int minutoLongitude, int segundoLongitude, long area, string endereco, string bairro, string cep, string codMunicipio, string EnderecoCorres, string bairroCorres, string cepCorres, string codMunicipio, string telefoneResidencial, string faxResidencial, string telefoneContado, string faxContato); $retorno = $client->incluirPropriedade($config['soap']['usuario'], $config['soap']['senha'], 'XXXXXXXXX', '', 1, 'Fazendinha do Bita', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 4500, 'S', 20, 29, 0, 'W', 51, 54, 11, 1321800, 'No meio do mato', '...', '79600000', '5008305', 'Rua qualquer', 'Centro', '79600000', '5008305', '', '', '12345678', '12345678'); //Chama a funcao no WebServices print_r($retorno); //Exibe Resultado na Tela } catch (SoapFault $exception) { //Em caso de erros echo $exception; //Exibe erros na tela } Nesse código, o XML pede long, mas o PHP não tem long então dá erro de conversão O erro: SoapFault exception: [soapenv:Server.userException] org.xml.sax.SAXException: Bad types (int -> long) in C:\xampp\htdocs\TestePHP\alterar\alterarPropriedade.php:13 Stack trace: #0 C:\xampp\htdocs\TestePHP\alterar\alterarPropriedade.php(13): SoapClient->__call('alterarPropried...', Array) #1 {main} <?php $url = 'http://homolog.agricultura.gov.br/sisbov_ws_nova_hom/'; $client = new SoapClient($url); $xmlr = new SimpleXMLElement('<incluirPropriedade></incluirPropriedade>'); $xmlr->addChild('usuario', 'XXXXXXXXXXXXXXX'); $xmlr->addChild('senha', 'XXXXXXXXXXX'); $xmlr->addChild('nirf', 'XXXXXXXXX'); $xmlr->addChild('incra', 'XXXXXXXXXXXX'); $xmlr->addChild('tipoPropriedade', '1'); $xmlr->addChild('nomePropriedade', 'Fazendinha do Bita'); $xmlr->addChild('acessoFazenda', 'XXXXXXXXXXXXXXXX'); $xmlr->addChild('distanciaSedeMunicipio', '4500'); $xmlr->addChild('orientacaoLatitude', 'S'); $xmlr->addChild('grauLatitude', '20'); $xmlr->addChild('minutoLatitude', '29'); $xmlr->addChild('segundoLatitude', '0'); $xmlr->addChild('orientacaoLongitude', 'W'); $xmlr->addChild('grauLongitude', '51'); $xmlr->addChild('minutoLongitude', '54'); $xmlr->addChild('segundoLongitude', '11'); $xmlr->addChild('area', '1321800'); $xmlr->addChild('logradouro', 'No meio do mato'); $xmlr->addChild('bairro', '...'); $xmlr->addChild('cep', '79600000'); $xmlr->addChild('codMunicipio', '5008305'); $xmlr->addChild('enderecoCorrespondenciaLogradouro', 'Rua qualquer'); $xmlr->addChild('enderecoCorrespondenciaBairro', 'Centro'); $xmlr->addChild('enderecoCorrespondenciaCep', '79600000'); $xmlr->addChild('enderecoCorrespondenciaCodMunicipio', '5008305'); $xmlr->addChild('telefoneResidencial', ''); $xmlr->addChild('faxResidencial', ''); $xmlr->addChild('nrTelefoneContato', '12345678'); $xmlr->addChild('nrFaxContato', '12345678'); $params = new stdClass(); $params->xml = $xmlr->asXML(); $result = $client->incluirPropriedade($params); Nesse código dá o mesmo erro ERR_CONNECTION_RESET (estou usando Google Chrome) <FONTES!!!> O primeiro código é do netbeans mesmo, o segundo tirei de um outro desenvolvedor SISBOV, e o terceiro adaptei da internet (não achei o tópico) Já tentei desabilitar esse erro do Chorme, mas não consegui Se alguém souber como me ajudar, por favor Desde já, obrigada
  3. public void consultaOperadoresSafra(){ CapturaPropostas capturaPropostas = new CapturaPropostas(); ICapturaPropostas iCapturaPropostas = capturaPropostas.getBasicHttpBindingICapturaPropostas(); DadosBasicosSafra basicosSafra = iCapturaPropostas.dadosSafra("1DFFA600E6489D3700A39CE2E5BEFD01"); System.out.println(basicosSafra); for (Empresa empresa : basicosSafra.getEmpresas()) { } }
  4. Gabriel Heming

    WS Classes Autogeradas - Soap 1.2

    Olá. Estou trabalhando na instalação de um KB no ERP Dynamics AX (KB4086133 - NFe 4.0). Quanto a instalação do KB, já sabíamos que ele possuía alguns problemas quanto ao consumo do web service do Sefaz. Problema inicial Quando a Microsoft iniciou o desenvolvimento da implementação, o Sefaz utilizava o name do serviço como "NfeAutorizacao4" (este é apenas um dos serviços). Segue o WSDL da parte que interessa: <wsdl:service name="NfeAutorizacao4"> <wsdl:port name="NfeAutorizacao4Soap" binding="tns:NfeAutorizacao4Soap"> <soap:address location="https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NfeAutorizacao4.asmx" /> </wsdl:port> <wsdl:port name="NfeAutorizacao4Soap12" binding="tns:NfeAutorizacao4Soap12"> <soap12:address location="https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NfeAutorizacao4.asmx" /> </wsdl:port> </wsdl:service> Após a liberação do KB, o governo realizou algumas mudanças na nomenclatura e alterou o nome do serviço para "NFeAutorizacao4" (alterando o F para maiúsculo). O que está ok, lembrando que isto tudo é dentro do prazo de homologação. O novo WSDL está da seguinte forma: <wsdl:service name="NFeAutorizacao4"> <wsdl:port name="NFeAutorizacao4Soap" binding="tns:NFeAutorizacao4Soap"> <soap:address location="https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx" /> </wsdl:port> <wsdl:port name="NFeAutorizacao4Soap12" binding="tns:NFeAutorizacao4Soap12"> <soap12:address location="https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx" /> </wsdl:port> </wsdl:service> Como a MS não está com previsão na liberação de um novo KB (até o presente momento) e somos um dos primeiros a realizar a atualização (visto que é apenas Brasil), optamos por corrigir por nós mesmo os problemas e, caso em algum futuro próximo a MS lance a correção, instalá-la. E isso tudo ocorreu perfeitamente, pois, temos acesso ao projeto VS dentro do ERP para customização. O que realmente está pegando, é um efeito colateral da custom que não estou conseguindo localizar alguém que tenha tido um problema similar. Todas as classes geradas, que vieram pelo KB, utilizam o sufixo "Soap12Client". Quando fizemos a correção e geramos novamente as classes, esse sufixo foi alterado apenas "SoapClient". Ou seja, a classe autogerada de serviço, que era esta: public partial class NFeAutorizacao4Soap12Client passou para: public partial class NFeAutorizacao4SoapClient O que, do ponto de vista de programação, não há nenhum problema. Entretanto, o Dynamics AX acaba utilizando esse sufixo para todas as chamadas de todos os serviços da NFe (existe um método que retorna o sufixo como "Soap12) e, quando mudado o sufixo para um serviço, muda para os demais serviços da NFe 4.0. Neste caso, são inúmeros endereços, como pode ser visto no link abaixo: http://hom.nfe.fazenda.gov.br/portal/webServices.aspx?tipoConteudo=Wak0FwB7dKs= Devido a este problema de sufixo, a customização se torna ainda maior, pois, seria necessário customizar em outros pontos do sistema. Como no WSDL há duas port's para o serviço (NFeAutorizacao4Soap e NFeAutorizacao4Soap12), a pergunta é a seguinte: Há como definir que as classes autogeradas sejam da versão 1.2 e/ou possuam o sufixo "Soap12"? Sei que eu posso alterar as classes auto geradas para que possuam o prefixo. Entretanto, quero saber como realizar esse procedimento de forma automática.
  5. 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.
  6. Boa tarde a todos. Estou tentando pegar os elementos do response de um request Soap, porém, não consigo acessar um determinado elemento. Esse elemento me apresenta 2 complicadores. 1. Ele aparece no TCPDUMP do response, mas não importa o método que eu use, não consigo acessa-lo ou manipulá-lo. 2. Ele está duplicado. Response <?xml version="1.0" encoding="utf-8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns1:getUserMSISDNResponse xmlns:ns1="http://www.csapi.org/schema/parlayx/sicoweb/v1_0/local"> <ns1:MSISDN>5599999999999</ns1:MSISDN> <ns1:IMEISV>000000000000000</ns1:IMEISV> <ns1:extendInfos> <name>userType</name> <value>0</value> </ns1:extendInfos> <ns1:extendInfos> <name>profile</name> <value>0</value> </ns1:extendInfos> </ns1:getUserMSISDNResponse> </soapenv:Body> </soapenv:Envelope> O MSISDN e o IMEISV eu consigo obter sem problemas, mas o que está dentro das duas "extendInfos" eu não consigo. Ja usei foreach, mas no maximo eu consigo um array com os MSISDN e o IMEISV. Alguém tem alguma idéia de como me ajudar? Obrigado.
  7. Vinny Oliveira

    Autenticação SOAP Server Side com retorno PHP

    Olá pessoal!! Estou precisando de uma ajuda para montar uma lógica-> Estou desenvolvendo um WS SOAP com PHP (lib nusoap), no entanto o client vai acessar com o basic authentication, com login/senha. Eu preciso que para cada metodo, o WS recupere um código do DB que será necessario para as consultas. Qual a melhor maneira de fazer isso?
  8. 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); ?>
  9. 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?
  10. Juliano L Laverde Ranite

    Enviar e Receber XML por SOAP PHP

    Estou começando a entender o conceito do SOAP, estou fazendo uma implementação e preciso enviar um XML para o DATASUS e receber a resposta, porém os arquivos já estão preparados, ou seja, um XML pronto pra eu manipular posteriormente no ambiente de produção, para que eu receba como resposta outro XML, procurei muito na internet e consegui montar um código que consegue chegar até o SOAP mas retorna um erro de um atributo que fica dentro da WSDL e não sei como resolver, alguém poderia me ajudar? Por se tratar de uma chave pública vou postar o código literal aqui: <?php try { $client = new SoapClient('https://servicoshm.saude.gov.br/cadsus/CadsusService/v5r0?wsdl'); // "ligar" o debug $parameters = array('<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:cad="http://servicos.saude.gov.br/cadsus/v5r0/cadsusservice" xmlns:cnes="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/cnesusuario" xmlns:fil="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/filtropesquisa" xmlns:nom="http://servicos.saude.gov.br/schema/corporativo/pessoafisica/v1r2/nomecompleto" xmlns:nom1="http://servicos.saude.gov.br/schema/corporativo/pessoafisica/v1r0/nomefamilia" xmlns:cpf="http://servicos.saude.gov.br/schema/corporativo/documento/v1r2/cpf" xmlns:mun="http://servicos.saude.gov.br/schema/corporativo/v1r2/municipio" xmlns:uf="http://servicos.saude.gov.br/schema/corporativo/v1r1/uf" xmlns:tip="http://servicos.saude.gov.br/schema/corporativo/documento/v5r0/tipodocumento"> <soap:Header> <wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-F6C95C679D248B6E3F143032021465917"> <wsse:Username>CADSUS.CNS.PDQ.PUBLICO</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">kUXNmiiii#RDdlOELdoe00966</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">KkB/ki6qUjcZpGNqL4monw==</wsse:Nonce> <wsu:Created>2015-04-29T15:10:14.659Z</wsu:Created> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <cad:requestPesquisar> <cnes:CNESUsuario> <cnes:CNES>6963447</cnes:CNES> <cnes:Usuario>LEONARDO</cnes:Usuario> <!--Optional:--> <cnes:Senha>?</cnes:Senha> </cnes:CNESUsuario> <fil:FiltroPesquisa> <!--Optional:--> <fil:nomeCompleto> <nom:Nome>SERGIO ARAUJO CORREIA LIMA</nom:Nome> </fil:nomeCompleto> <fil:tipoPesquisa>IDENTICA</fil:tipoPesquisa> </fil:FiltroPesquisa> <cad:higienizar>0</cad:higienizar> </cad:requestPesquisar> </soap:Body> </soap:Envelope>'); $wcf = $client->Pesquisar($parameters); // o resto do código }catch(SoapFault $fault){ echo 'Request: <br/><xmp>', $client->__getLastRequest(), '</xmp><br/><br/> Error Message: <br/>', $fault->getMessage(); } Pelo soapUI eu passo esse XML para a WSDL acima e ele me responde: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <S:Header xmlns:S="http://www.w3.org/2003/05/soap-envelope"> <work:WorkContext xmlns:work="http://oracle.com/weblogic/soap/workarea/">rO0ABXdfABl3ZWJsb2dpYy5hcHAuY2Fkc3VzLWVhci01AAAA1gAAACN3ZWJsb2dpYy53b3JrYXJlYS5TdHJpbmdXb3JrQ29udGV4dAAVNS40LjE1LVNOQVBTSE9ULjEwNzM5AAA=</work:WorkContext> </S:Header> <S:Body xmlns:S="http://www.w3.org/2003/05/soap-envelope"> <cad:responsePesquisar xmlns:cad="http://servicos.saude.gov.br/cadsus/v5r0/cadsusservice"> <res:ResultadoPesquisa xmlns:res="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns18:CNS xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns4:numeroCNS xmlns:ns4="http://servicos.saude.gov.br/schema/cadsus/v5r0/cns">703404696479515</ns4:numeroCNS> </ns18:CNS> <ns18:NomeCompleto xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns11:Nome xmlns:ns11="http://servicos.saude.gov.br/schema/corporativo/pessoafisica/v1r2/nomecompleto">SERGIO ARAUJO CORREIA LIMA</ns11:Nome> </ns18:NomeCompleto> <ns18:dataNascimento xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa">1981-11-10</ns18:dataNascimento> <ns18:Mae xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns11:Nome xmlns:ns11="http://servicos.saude.gov.br/schema/corporativo/pessoafisica/v1r2/nomecompleto">LINDYNALVA SOARES ARAUJO CORREIA LIMA</ns11:Nome> </ns18:Mae> <ns18:Pai xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns11:Nome xmlns:ns11="http://servicos.saude.gov.br/schema/corporativo/pessoafisica/v1r2/nomecompleto">DEJAIR CORREIA LIMA</ns11:Nome> </ns18:Pai> <ns18:Sexo xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns19:codigoSexo xmlns:ns19="http://servicos.saude.gov.br/schema/corporativo/pessoafisica/v1r1/sexo">M</ns19:codigoSexo> </ns18:Sexo> <ns18:MunicipioNascimento xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns15:codigoMunicipio xmlns:ns15="http://servicos.saude.gov.br/schema/corporativo/v1r2/municipio">211130</ns15:codigoMunicipio> <ns15:nomeMunicipio xmlns:ns15="http://servicos.saude.gov.br/schema/corporativo/v1r2/municipio">SAO LUIS</ns15:nomeMunicipio> <ns15:UF xmlns:ns15="http://servicos.saude.gov.br/schema/corporativo/v1r2/municipio"> <ns16:codigoUF xmlns:ns16="http://servicos.saude.gov.br/schema/corporativo/v1r1/uf"/> <ns16:siglaUF xmlns:ns16="http://servicos.saude.gov.br/schema/corporativo/v1r1/uf">MA</ns16:siglaUF> </ns15:UF> </ns18:MunicipioNascimento> <ns18:PaisNascimento xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns20:codigoPais xmlns:ns20="http://servicos.saude.gov.br/schema/corporativo/v1r2/pais">010</ns20:codigoPais> <ns20:nomePais xmlns:ns20="http://servicos.saude.gov.br/schema/corporativo/v1r2/pais">BRASIL</ns20:nomePais> </ns18:PaisNascimento> <ns18:GrauQualidade xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns21:percentualQualidade xmlns:ns21="http://servicos.saude.gov.br/schema/cadsus/v5r0/grauqualidade">91</ns21:percentualQualidade> </ns18:GrauQualidade> <ns18:IdentificadorCorporativo xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa"> <ns2:numeroIdentificadorCorporativo xmlns:ns2="http://servicos.saude.gov.br/schema/cadsus/v5r0/identificadorcorporativo">0002189687</ns2:numeroIdentificadorCorporativo> </ns18:IdentificadorCorporativo> <ns18:Situacao xmlns:ns18="http://servicos.saude.gov.br/wsdl/mensageria/v5r0/resultadopesquisa">true</ns18:Situacao> </res:ResultadoPesquisa> </cad:responsePesquisar> </S:Body> </soap:Envelope> *** Porém quando eu rodo o código acima ele me retorna: SOAP-ERROR: Encoding: object has no 'CNESUsuario' property Já li uma tonelada de conteúdo e não consigo encontrar uma solução para o problema.
  11. Felipe da Silveira

    Web Service

    Bom dia, estou cursando o ultimo período do curso ciências da computação e meu trabalho de conclusão de curso é sobre Web Service. Abaixo segue o link para o questionário que eu criei, seria de grade ajuda a colaboração. Desde já agradeço. https://docs.google.com/forms/d/e/1FAIpQLSd_HBKpLTuvM4qjHiTH6PP3OAKmgddKGg0fRBBU3i51BUQsWg/viewform?c=0&w=1
  12. Jonatas Rafael

    [AJUDA] WebServices SOAP

    Boa tarde amigos, Estou com problemas para consumir um webservices soap, clienteWriteData.php <?php // cliente php // inclusao do arquivo da classe NuSOAP include('nusoap/lib/nusoap.php'); include('ItemValue.php'); // define a localizacao do wsdl $wsdl = 'http://localhost:8080/ScadaBR/services/API?wsdl'; // criacao de uma instancia do cliente $cliente = new nusoap_client($wsdl, true); // verifica se ocorreu algum erro na inicializacao do objeto $err = $cliente->getError(); if ($err) { echo 'Erro no construtor<pre>".$err"</pre>'; } else { echo 'Nenhum erro na inicializacao...' ; printf("\n"); } $proxy = $cliente->getProxy(); $ItemValue = new ItemValue(); $ItemValue->itemName = "Bomba01"; $ItemValue->dataType = 'BOOLEAN'; $ItemValue->value = '0'; $ItemValue->quality = 'GOOD'; $ItemValue->timestamp = time(); $iv1 = array("itemName" => "Bomba01", "dataType" => 'BOOLEAN', "value" => '0', "quality" => 'GOOD', "timestamp" => time()); $itemsList = array($iv1); echo '<pre>'; print_r($itemsList); echo '</pre>'; $param = array($itemsList); echo '<pre>'; print_r($param); echo '</pre>'; // chama o metodo browseTags $result = $proxy->call('writeData', $param); // Check for a fault if ($proxy->fault) { echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { // Check for errors $err = $proxy->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>'; } } if ($result == null) { echo 'Retorno nulo !'; } //exibe o resultado print_r($result); ?> SAIDA -> Result Array ( [errors] => Array ( [code] => INSUFFICIENT_PARAMETERS [description] => Faltam par�metros obrigat�rios. (itemList) ) [replyBase] => Array ( [rcvTime] => 2017-09-11T19:18:38.654Z [replyTime] => 2017-09-11T19:18:38.654Z ) ) Array ( [errors] => Array ( => INSUFFICIENT_PARAMETERS [description] => Faltam par�metros obrigat�rios. (itemList) ) [replyBase] => Array ( [rcvTime] => 2017-09-11T19:18:38.654Z [replyTime] => 2017-09-11T19:18:38.654Z ) ) WSDL : https://www.wsdl-analyzer.com/service/service/1917208614?version=1 Site do Desenvolvedor http://www.scadabr.com.br Exemplos para utilização do webservices: https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/scadabr Agradeço desde já!
  13. Olá bom dia! Me chamo Diego, estou entrando no mundo da programação não tenho muita experiência, mais preciso de uma dica do pessoal mais experiente para conseguir pegar um tipo de situação. Tenho um sistema que integra via API com protocolo RestFULL e queria saber quando faço uma requisição e ela atingi o "tempo limite de operação excedido (Time Out)". Como faço para pegar esse tipo de situação, eu queria gravar em um log no banco de dados, quando o tempo se esgota e não tenho retorno da requisição feita. E também se possível quando elas são bem sucedidas e o tempo que demorou para ter um retorno. *** não sei capturar esse tipo de informação acima descrito!
  14. Daniel Costa da Silva

    Enviar XML como parametro SOAP no nuSoap

    Bom dia, estou com dificuldades em fazer uma requisição enviado um xml via soap usando nusoap. Server class Servicos extends MY_Controller { function __construct() { parent::__construct(); $CI =& get_instance(); $CI->load->library("nusoap"); $CI->nusoap->nusoap_lib(); $this->nusoap_server = new soap_server(); $this->nusoap_server->configureWSDL("SoapTeste", "urn:SoapTeste"); $this->nusoap_server->register( "RelatorioXYZ", array("tmp" => "xsd:string"), array("return" => "xsd:string"), false, false, "rpc", "encoded", "Obter Relatorio do XYZ"); function RelatorioXYZ($tmp){ if (!$tmp) { return new soap_fault('-1', 'Server', 'Favor Preencher com o XML!'); } else { $xmlstr = "<?xml version='1.0' encoding='utf-8'?>". "<i4pro></i4pro>"; $xml = new SimpleXMLElement($xmlstr); $obter_relatorio_pdf = $xml->addChild('obter_relatorio'); $obter_relatorio_pdf->addAttribute('id_relatorio', $tmp['var']['valor1']); $obter_relatorio_pdf->addAttribute('id_endosso', $tmp['var']['valor2']); $dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($xml->asXML()); $cliente = new SoapClient('http://10.0.1.1/webservice/teste.asmx?WSDL'); $params = array('Servico' => 'ObterRelatorioXYZ' ,'conteudoXML' => $dom->saveXML() ); $response = $cliente->Executar($params); } } } function index() { /*$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $this->nusoap_server->service($HTTP_RAW_POST_DATA);*/ @$this->nusoap_server->service(file_get_contents("php://input")); } } SOAP Envent <SOAP-ENV:Body><ObterRelatorioXYZ><tmp xsi:type="xsd:string">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;obter_relatorio id_relatorio=&quot;21&quot; id_endosso=&quot;7720940&quot;/&gt;</tmp></ObterRelatorioXYZ> o erro é quando eu tento tratar a variavel dentro da função, quando tento ler a string $tmp['varival']['valor1'] ele me retorna &lt;.
  15. ukow

    Erro SOAP ao enviar XML

    Estou tentando enviar um XML para o webservice da Rede Porém ao enviar ocorre o seguinte erro. "soap:ReceiverServer was unable to process request. ---> Data at the root level is invalid. Line 1, position 1. 0 soap:ReceiverServer was unable to process request. ---> Data at the root level is invalid. Line 1, position 1." O que pode ser? <?php $ANO = $_POST['ANO']; $CVC2 = $_POST['CVC2']; $FILIACAO = "0000000"; $MES = $_POST['MES']; $NRCARTAO = $_POST['NRCARTAO']; $NUMPEDIDO = "20041416"; $ORIGEM = "01"; $PARCELAS = "00"; $PORTADOR = $_POST['PORTADOR']; $RECORRENTE = "0"; $TOTAL = $_POST['TOTAL']; $TRANSACAO = "4"; $mensagem= "<?xml version='1.0' encoding='utf-8'?>"; $mensagem.= " <requisicao-consulta id='5' versao='1.0.0'>"; $mensagem.= "<TOTAL>"; $mensagem.= $TOTAL; $mensagem.= "</TOTAL>"; $mensagem.= "<TRANSACAO>"; $mensagem.= $TRANSACAO; $mensagem.= "</TRANSACAO>"; $mensagem.= "<PARCELAS>"; $mensagem.= $PARCELAS; $mensagem.= "</PARCELAS>"; $mensagem.= "<FILIACAO>"; $mensagem.= $FILIACAO; $mensagem.= "</FILIACAO>"; $mensagem.= "<NUMPEDIDO>"; $mensagem.= $NUMPEDIDO; $mensagem.= "</NUMPEDIDO>"; $mensagem.= "<NRCARTAO>"; $mensagem.= $NRCARTAO; $mensagem.= "</NRCARTAO>"; $mensagem.= "<CVC2>"; $mensagem.= $CVC2; $mensagem.= "</CVC2>"; $mensagem.= "<MES>"; $mensagem.= $MES; $mensagem.= "</MES>"; $mensagem.= "<ANO>"; $mensagem.= $ANO; $mensagem.= "</ANO>"; $mensagem.= "<PORTADOR>"; $mensagem.= $PORTADOR; $mensagem.= "</PORTADOR>"; $mensagem.= "<IATA></IATA>"; $mensagem.= "<DISTRIBUIDOR></DISTRIBUIDOR>"; $mensagem.= "<CONCENTRADOR></CONCENTRADOR>"; $mensagem.= "<TAXAEMBARQUE></TAXAEMBARQUE>"; $mensagem.= "<ENTRADA></ENTRADA>"; $mensagem.= "<NUMDOC1 a NUMDOC4></NUMDOC1 a NUMDOC4>"; $mensagem.= "<PAX1 a PAX4></PAX1 a PAX4>"; $mensagem.= "<CONFTXN>S</CONFTXN>"; $mensagem.= "<ADD_Data></ADD_Data>"; $mensagem.= " </requisicao-consulta>"; /** * Iniciando CURL */ $curl = curl_init(); /** * Verificamos se o recurso CURL foi criado com êxito */ if ( is_resource( $curl ) ){ curl_setopt( $curl , CURLOPT_HEADER , 0 ); curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0); curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt( $curl , CURLOPT_FOLLOWLOCATION , 1 ); curl_setopt( $curl , CURLOPT_URL , 'https://ecommerce.userede.com.br/pos_virtual/wskomerci/cap.asmx?WSDL' ); curl_setopt( $curl , CURLOPT_POST , 1 ); curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( array( 'mensagem' => $mensagem ) ) ); $xml = curl_exec( $curl ); $ern = curl_errno( $curl ); $err = curl_error( $curl ); curl_close( $curl ); if ( (bool) $ern ){ echo 'Ocorreu um erro[' , $ern , ']: ' , $err; } else { //var_dump( $xml , $ern , $err ); print_r($xml."<br><hr><br>"); print_r($ern."<br><hr><br>"); print_r($err."<br><hr><br>"); $DadosEnvio= simplexml_load_string($xml); echo "<pre>".$xml."</pre>"; } } else { echo 'erro'; } ?> Obrigado :D
  16. A prefeitura oferece um ótimo suporte (sarcasmo) a webservice fornecida, e graças a isso estou perdido a muito tempo no que deveria ser um negócio muito simples. http://isscuritiba.curitiba.pr.gov.br/ Com o código abaixo eu faço login no webservice do ISS de curitiba, consigo enviar a requisição xml com sucesso e receber o retorno do webservice, porém, não consigo identificar no servidor/documentação quais são os campos obrigatórios pra trazer dados, e nem quais são os formatos dos campos, a minha resposta é que os dados enviados sempre estão inválidos. <?php $xml_data = '<?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> <ConsultarNfse xmlns="http://www.e-governeapps2.com.br/"> <ConsultarNfseEnvio> <Prestador> <Cnpj>string</Cnpj> <InscricaoMunicipal>string</InscricaoMunicipal> </Prestador> </ConsultarNfseEnvio> </ConsultarNfse> </soap:Body> </soap:Envelope>'; $url = "https://pilotoisscuritiba.curitiba.pr.gov.br/nfse_ws/NfseWs.asmx?WSDL"; $headers = array( "POST /nfse_ws/nfsews.asmx HTTP/1.1", "Host: pilotoisscuritiba.curitiba.pr.gov.br", "Content-Type: text/xml; charset=utf-8", "SOAPAction: \"http://www.e-governeapps2.com.br/ConsultarNfse\"", "Content-length: " . strlen($xml_data) ); $xml = $xml_data; $ch = curl_init(); $soapUser = "username"; // username $soapPassword = "123456"; // password curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd() . '\Pre_ISS_Cert.pem'); curl_setopt($ch, CURLOPT_URL, "$url"); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSH_PRIVATE_KEYFILE, getcwd() . '\Pref_ISS_Cert.pfx'); curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . '\Pre_ISS_Cert.pem'); curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "easy2017"); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_REFERER, "$url"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $ch_result = curl_exec($ch); print_r($ch_result); curl_close($ch); ?> Alguma ideia do que fazer nessa situação sabendo que não adianta ligar pro lugar que fornece o serviço?
  17. cleytonSouza

    Retorno Soap XML

    Boa tarde, Pessoal. Estou com uma dificuldade tremenda para entender as informações que recebo no retorno de um serviço. Estou verificando que estou recebendo um xml dentro do outro... isso é correto? Exemplo: <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> <POSFINRESPONSE xmlns="http://187.94.62.86:6621/"> <POSFINRESULT><![CDATA[<?xml version="1.0" encoding="ISO-8859-1"?><posfin><TITULO><E1_NUM>000058711</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170316</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230968</RECNO></TITULO><TITULO><E1_NUM>000058712</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170417</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230969</RECNO></TITULO><TITULO><E1_NUM>000058713</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170516</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230970</RECNO></TITULO><TITULO><E1_NUM>000058714</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170616</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230971</RECNO></TITULO><TITULO><E1_NUM>000058715</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170717</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230972</RECNO></TITULO><TITULO><E1_NUM>000058716</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170816</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230973</RECNO></TITULO><TITULO><E1_NUM>000058717</E1_NUM><E1_EMISSAO>20160901</E1_EMISSAO><E1_VENCREA>20170918</E1_VENCREA><E1_VALOR>622.63</E1_VALOR><E1_JUROS>0</E1_JUROS><E1_MULTA>0</E1_MULTA><E1_NOMCLI>AGF JABOATAO CENTRO</E1_NOMCLI><A1_CGC>41024050000196</A1_CGC><E1_BAIXA></E1_BAIXA><RECNO>230974</RECNO></TITULO></posfin>]]></POSFINRESULT> </POSFINRESPONSE> </soap:Body> </soap:Envelope>
  18. 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.
  19. Beleza, Pessoal Estou tentando montar um webservice de insert e update na base de dados,para integrar com mobile-android Porem quando faço a requisição do web service, está dando esse erro somente nesse servidor. wsdl error: Getting http://localhost/webservice/servidor.php?wsdl - HTTP ERROR: Couldn't open socket connection to server http://localhost/webservice/servidor.php?wsdl, Error (10060): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - 9998 Alguém pode me ajudar
  20. Ellen Diana Guissoni

    Webservice wsdl

    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;
  21. ghlevin

    Usando Soapclient com XML puro em PHP

    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.
  22. 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.
  23. 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.
  24. mjstudios

    Autenticação HTTP Soap

    Salve pessoal, preciso consumir um webservice porem ele esta sobe autenticação HTTP e não consigo passar esses parametros. Tentei dessa maneira: <?php $communityService = new SoapClient("https://homologa.xml", array('login' => "meuusuario", 'password' => "minhasenha")); var_dump($communityService->getFuncao(''); ?> Retorna o Erro: Fatal error: Uncaught SoapFault exception: [HTTP] Unauthorized in /home/public_html/site/w.php:6 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="... ja estive olhando algumas coisas sobre SoapHeader mas não funcionou tambem. Alguém tem uma dica como posso resolver isso? Obrigado Junior
  25. Alguém me ajuda por favor! Instalei xampp para aprender coisas nova no magento mas mesmo instalando o MySQL e o apache corretamente o erro persiste.Quando vou aos primeiros passos de instalação do magento me deparo com essa mensagem : PHP extensão "sabão" deve ser carregado. Ja Procurei varias ajudas mas,só encontro sites para programadores php como não sei programar em php fico perdido<p>
×

Important Information

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