mapb_1990 0 Denunciar post Postado Junho 9, 2009 boas, tenho k fazer uma aplicação k envie sms's kuando uma reparação está concluida. há uma operadora movel que tem uma API k permite interligar o sistema de envio de sms's deles, com uma outra aplicação. pelo que pude ver no manual k me mandaram a conexão entre os dois sistemas é feita por xml. ai está a minha duvida. eu nunca trabalhei com xml, mt menos xml com php, e nem ser komo isso funca. alguem me pode arranjar um exemplo? Manual da API Compartilhar este post Link para o post Compartilhar em outros sites
Renato Siroma 2 Denunciar post Postado Junho 10, 2009 Do jeito que você escreveu, um arquivo PDF hospedado no RapidShare e Uma operadora cujo você não citou o nome; Creio que seja algum tipo de vírus este arquivo PDF. Caso queira minha ajuda, por favor hospede o PDF no scribd. Compartilhar este post Link para o post Compartilhar em outros sites
mapb_1990 0 Denunciar post Postado Junho 10, 2009 done. http://www.scribd.com/doc/16308340/SMSExpressWebServices1 Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Junho 11, 2009 Na verdade, trata-se de um Web Service. Voce nao precisa se preocupar com os XML´s, basta criar um Soap Client e executar os metodos no objeto que voce criou. Veja: http://br.php.net/manual/pt_BR/book.soap.php Compartilhar este post Link para o post Compartilhar em outros sites
mapb_1990 0 Denunciar post Postado Julho 29, 2009 thanks. estive a estudar o caso e resolvi utilizar a classe nusoap. fiz um pequena teste, para ver se funcionava, mas não acontece nd. alguem pode ajudar? <?php echo '<-- INICIO --><br />'; include_once('lib/nusoap.php'); $smsExpress['url'] = "https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2?wsdl"; $soapCliente = new soapclient($smsExpress['url']); $parametros = array( 'application' => 'teste', 'username' => 'ju', 'password' => 'passwd', 'message' => 'mensagem de teste', 'recipients' => array('961512769'), 'sender' => 'teste sender', 'validity' => 1, ); $result = $soapCliente->call('sendSmsSubmission',$parametros); echo $result; echo '<br />-----<br />'; echo '<strong>Pedido:</strong><br><xmp>' . $soapCliente->request . '</xmp><br>'; echo '<strong>Resposta:</strong><br><xmp>' . $soapCliente->response . '</xmp><br>'; echo '<br /><-- FIM -->'; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Julho 30, 2009 Se o soap estiver habilitado no php.ini, naum precisa usar o nusoap, naum vai funcionar. Verifique se ocorrem erros. Compartilhar este post Link para o post Compartilhar em outros sites
mapb_1990 0 Denunciar post Postado Julho 31, 2009 eu utilizei o nusoap porque li que tem vantagens sobre o soap nativo do php. realmente tinha-me esquecido de habilitar o soap no php.ini. depois de o habilitar, ja aparece alguma coisa, é pena ser um erro. Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: I/O warning : failed to load external entity "https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2?wsdl" in D:\wamp\www\tvprincipe\SmsExpress\index.php on line 9 Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2?wsdl' in D:\wamp\www\tvprincipe\SmsExpress\index.php:9 Stack trace: #0 D:\wamp\www\tvprincipe\SmsExpress\index.php(9): SoapClient->SoapClient('https://smsexpr...') #1 {main} thrown in D:\wamp\www\tvprincipe\SmsExpress\index.php on line 9 http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Compartilhar este post Link para o post Compartilhar em outros sites
mapb_1990 0 Denunciar post Postado Agosto 3, 2009 alguem sabe o k tou a fazer mal? Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Agosto 4, 2009 Decida usar ou o SOAP nativo ou o nusoap. As duas juntas não funciona. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 4, 2009 eu utilizei o nusoap porque li que tem vantagens sobre o soap nativo do php. Não é que o NuSOAP é melhor que o SOAP nativo, o NuSOAP apenas faz uso do poder do SOAP nativo + o Know How da NuSphere e Dietrich Ayala. Porém eu pessoalmente não gosto do NuSOAP, tenho projetos gigantes onde o nível de integração é total e utilizei apenas o SOAP nativo, veja o link onde utilizo SOAP: http://www.com4.com.br Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: I/O warning : failed to load external entity "https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2?wsdl" in D:wampwwwtvprincipeSmsExpressindex.php on line 9 Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2?wsdl' in D:wampwwwtvprincipeSmsExpressindex.php:9 Stack trace: #0 D:wampwwwtvprincipeSmsExpressindex.php(9): SoapClient->SoapClient('https://smsexpr...') #1 {main} thrown in D:wampwwwtvprincipeSmsExpressindex.php on line 9 Certo, o SOAP já está habilitado, isso é um bom início. Quando fui criar uma instância de SoapClient para testar esse WSDL percebi, para minha surpresa que o WSDL dessa URL está com problema: <b>Fatal error</b>: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2?wsdl' : Start tag expected, '<' not found Assim, eu fui até o link pelo navegador e quando abriu o WSDL eu baixei ele, salvando como SubmissionManager2.wsdl e fiz a validação, dessa vez validou. Isso normalmente significa que, devido ao link que você passou gerar dinamicamente o WSDL ou o fato de estar enviando dados antes mesmo do WSDL ser carregado e causando uma excessão no SSL esteja confundindo o SOAP. De qualquer forma, você pode usar a versão que você baixou: (Abra o código fonte e baixe por lá) /** * Usando nossa versão local */ $cliente = new SoapClient( "SubmissionManager2.wsdl", array( 'trace' => 1, 'exceptions' => 1, "style" => SOAP_RPC, "use" => SOAP_ENCODED, "soap_version" => SOAP_1_1, 'encoding' => 'UTF-8' ) ); print_r( $cliente->__getFunctions() ); A saída será: Array ( [0] => void cancelSubmission(AuthenticationInfo $authentication, string $submissionId) [1] => SubmissionStatus sendSmsSubmission(AuthenticationInfo $authentication, SmsSubmission $submission) [2] => SubmissionStatus sendMmsSubmission(AuthenticationInfo $authentication, MmsSubmission $submission) [3] => SubmissionStatus sendWapPushSubmission(AuthenticationInfo $authentication, WapPushSubmission $submission) [4] => SubmissionStatus sendSmsPullSubmission(AuthenticationInfo $authentication, SmsPullSubmission $submission) [5] => ArrayOfSmsPullSubmissionResponse getSmsPullSubmissionResponses(AuthenticationInfo $authentication, string $submissionId) [6] => SubmissionStatus2 getSubmissionStatus(AuthenticationInfo $authentication, string $submissionId) [7] => SubmissionDetails getSubmissionDetails(AuthenticationInfo $authentication, string $submissionId, boolean $getRecipientsStatus) ) Então o SOAP está funcionando, vamos agora um teste real: /** * Essa será a classe que conterá o retorno da chamada SmsSubmission */ class SubmissionStatus { public $id = ""; public $message = ""; public $status = 0; } /** * Classe que será usada para autenticação */ class AuthenticationInfo { public $application; public $password; public $username; public function __construct( $application , $password , $username ){ $this->application = $application; $this->password = $password; $this->username = $username; } } /** * Classe base para o envio usando o webservice */ class Submission { public $contactLists = array(); public $deliveryDate; public $notification = true; public $notificationRecipient = ""; public $notificationType = ""; public $recipients = array(); public $sender = ""; public $validity = 0; } /** * Essa é a classe para o envio de SMS, ela usa a classe Submission como base */ class SmsSubmission extends Submission { public $alphabet = ""; public $message = ""; public $substitutions = array(); public $useSubstitutions = false; } Agora que já temos nossas "interfaces" vamos juntar tudo para fazer o pedido: /** * Preste atenção que estamos usando a versão local do WSDL */ $cliente = new SoapClient( "SubmissionManager2.wsdl", array( 'trace' => 1, 'exceptions' => 1, "style" => SOAP_RPC, "use" => SOAP_ENCODED, "soap_version" => SOAP_1_1, 'encoding' => 'UTF-8', 'classmap' => array( "SubmissionStatus" => "SubmissionStatus" ) ) ); $submission = new SmsSubmission(); $submission->message = "Mensagem de teste"; $submission->recipients[] = "961512769"; $submission->sender = "teste sender"; $submission->validity = 1; try { $status = $cliente->sendSmsSubmission( new AuthenticationInfo( "teste" , "ju" , "pswd" ) , $submission ); var_dump( $status ); } catch ( SoapFault $fault ){ printf( "O seguinte erro ocorreu ao enviar os dados: Erro[ %s ]: %sn" , $fault->getCode() , $fault->getMessage() ); } Para mim a solicitação foi: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://mobicomp.com/smsexpress/webservice/server/message" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://common.server.webservice.smsexpress.mobicomp.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:sendSmsSubmission> <authentication xsi:type="ns2:AuthenticationInfo"> <application xsi:type="SOAP-ENC:string">teste</application> <password xsi:type="SOAP-ENC:string">ju</password> <username xsi:type="SOAP-ENC:string">pswd</username> </authentication> <submission xsi:type="ns1:SmsSubmission"> <contactLists SOAP-ENC:arrayType="SOAP-ENC:string[0]" xsi:type="ns1:ArrayOf_soapenc_string" /> <deliveryDate xsi:nil="true" /> <notification xsi:type="xsd:boolean">true</notification> <notificationRecipient xsi:type="SOAP-ENC:string" /> <notificationType xsi:type="SOAP-ENC:string" /> <recipients SOAP-ENC:arrayType="SOAP-ENC:string[1]" xsi:type="ns1:ArrayOf_soapenc_string"> <item xsi:type="SOAP-ENC:string">961512769</item> </recipients> <sender xsi:type="SOAP-ENC:string">teste sender</sender> <validity xsi:type="xsd:int">1</validity> <alphabet xsi:type="SOAP-ENC:string" /> <message xsi:type="SOAP-ENC:string">Mensagem de teste</message> <substitutions SOAP-ENC:arrayType="SOAP-ENC:string[][0]" xsi:type="ns1:ArrayOfArrayOf_soapenc_string" /> <useSubstitutions xsi:type="xsd:boolean">false</useSubstitutions> </submission> </ns1:sendSmsSubmission> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Obviamente que, como a senha que eu usei não é válida, recebi a seguinte resposta: <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:0002</faultcode> <faultstring>Username ou password inválidos. Tente novamente. </faultstring> <detail> <ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">com.mobicomp.smsexpress.webservice.server.common.AuthenticationException </ns2:exceptionName> <ns3:hostname xmlns:ns3="http://xml.apache.org/axis/">sx-as1.tmn.pt</ns3:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> Isso mostra que, como houve a validação do usuário e senha, funcionou 100% Compartilhar este post Link para o post Compartilhar em outros sites
mapb_1990 0 Denunciar post Postado Agosto 4, 2009 João Batista Neto, muito obrigado pela ajuda. já fiquei a entender de webServices, à sua conta. só tenho mais 3 questões: para que serve a classe SubmissionStatus? como é k vejo a solicitação e a resposta? como resolvo o problema do wsdl nao dar, kuando está no server pa empresa que disponibiliza o serviço? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 4, 2009 1. para que serve a classe SubmissionStatus? Sempre que você utilizar $cliente->sendSmsSubmission você irá receber como resposta uma instância da classe SubmissionStatus com o status do seu envio; No PDF da documentação contém os códigos do status e o significado de cada um deles. 2. como é k vejo a solicitação e a resposta? Sempre que você utiliza o SoapClient você consegue ver o que enviou e o que recebeu utilizando os seguintes métodos: $cliente = new SoapClient( "SubmissionManager2.wsdl", array( 'trace' => 1, 'exceptions' => 1, "style" => SOAP_RPC, "use" => SOAP_ENCODED, "soap_version" => SOAP_1_1, 'encoding' => 'UTF-8', 'classmap' => array( "SubmissionStatus" => "SubmissionStatus" ) ) ); $cliente->sendSmsSubmission(....); var_dump( $cliente->__getLastRequest() ); //Isso irá mostrar sua última solicitação var_dump( $cliente->__getLastRequestHeaders() ); //Isso irá mostrar os cabeçalhos da sua última solicitação var_dump( $cliente->__getLastResponse() ); //Isso irá mostrar a resposta da sua última solicitação var_dump( $cliente->__getLastResponseHeaders() ); //Isso irá mostrar os cabeçalhos da resposta da sua última solicitação 3. como resolvo o problema do wsdl nao dar, kuando está no server pa empresa que disponibiliza o serviço? Você deve entrar em contato com a empresa e pedir para eles verificarem o link, e até que essa verificação tenha sido feita você poderá fazer como eu disse, baixar o WSDL e usar uma cópia local. Isso não irá interferir no funcionamento do serviço porque na definição do web service é definido também o caminho da aplicação: <wsdl:service name="SubmissionManagerService"> <wsdl:port binding="impl:SubmissionManager2SoapBinding" name="SubmissionManager2"> <!-- Aqui está o caminho da aplicação --> <wsdlsoap:address location="https://smsexpress.tmn.pt/smsexpress-webservices/SubmissionManager2"/> </wsdl:port> </wsdl:service> Compartilhar este post Link para o post Compartilhar em outros sites
Eduardo J A Tavares 0 Denunciar post Postado Abril 14, 2010 Como seria para buscar um valor? o seu exemplo acredito eu foi inserindo, gosteria de saber seria um retornando. Compartilhar este post Link para o post Compartilhar em outros sites