Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá.
Gostaria de saber se alguém já trabalhou com a Zend_Soap.
Gostaria de obter maiores informações sobre a classe e também algumas praticas ou dicas sobre segurança.
Grato
Os dois. ^_^
Como deve ser feita a comunicação entre os dois?
Mas você quer criar um webservice Client ou Server?
Carlos Eduardo
Então... não sei a diferença entre eles.
Mas o que preciso é o seguinte:
Minha aplicação esta rodando no servidor A, em determinado momento preciso que seja executado algumas operações no servidor B.
Esse servidor B será apenas para armazenagem de alguns arquivos.
Por exemplo, acesso minha aplicação no servidor A e após o cadastro, acesso o servidor B e passo uma key de cadastro. o webservice no servidor B valida essa key e cria uma estrutura de pastas, por exemplo.
Algo desse tipo...
Gostaria de saber se da pra ser feito dessa forma e quais os riscos.
[]'s
No servidor B você vai criar um Server.
No servidor A você vai consumir o serviço do servidor B (Client).
Sobre as questões de segurança, é seguro como qualquer webservice é. O que você precisa é estudar um pouco sobre como criar um Webservice. Conceito, formas de trabalhar, segurança... Algo nesta linha, independente da linguagem utilizada. Depois você estuda um pouco sobre o Zend_Soap, que na verdade é uma implementação da classe Soap do PHP. Ou pode ser que você veja que outra forma de trabalhar com Webservice é mais adequado à sua necessidade.
Analisando por cima a sua situação, não sei se seria necessário criar webservice, já que não há necessidade de retornar dados do servidor B para o servidor A (ou há?). Talvez só criar uma rotina com cURL seja mais simples de fazer, já que você pode enviar autenticação por ele.
Carlos Eduardo
Há possibilidade de fazer um upload para o sevidor B atravez da aplicação que esta no servidor A?
Isso também pode ser feito pelo cURL?
Olha, tenho 99% de certeza que sim.
Carlos Eduardo
Você acha melhor via cURL ou algo com o SOAP?
Pode me ajudar a criar essa app?
Grato.
Cara, o Soap e o cURL tem utilizações bem distintas. O Soap você deve utilizar se necessitar de algum resultado do server B. Caso contrário, se for só para enviar dados do server A para o B e o B fazer alguma rotina, mas que não precise retornar nenhuma informação, cURL vai servir perfeitamente para o que você precisa.
Uma das utilizações do cURL é simular o envio de um formulário, mas sem que haja o formulário (esta é uma explicação bem simplória, OK?).
Agora, sobre te ajudar a criar, posso te ajudar nas dúvidas que você tiver. Como você está utilizando o Zend Framework, utilize o Zend_Http_Client_Adapter_Curl, que é a abstração do cURL.
Carlos Eduardo
Legal.
Nesse caso o que realmente farei é enviar os dados de um servidor par o outro e executar somente um rotina.
Irei ler sobre Zend_Http_Client_Adapter_Curl e fazer alguns testes, qualquer dúvida torno a postar.
Mais uma vez muito obrigado.
Conforme exemplo, fiz o trecho abaixo para subir uma imagem pela aplicação rodando localmente (servidor A) para um servidor onde se encontra a aplicação online (servidor B).
$putFileSize = filesize( APPLICATION_PATH . "\data\koala.jpg" );
$putFileHandle = fopen( APPLICATION_PATH . "\data\koala.jpg", "r");
$adapter = new Zend_Http_Client_Adapter_Curl();
$client = new Zend_Http_Client( "http://desenv.meusite.com.br/koala.jpg" );
$client->setAdapter($adapter);
$adapter->setConfig(array(
'curloptions' => array(
CURLOPT_URL => "ftp://login:senha@desenv.meusite.com.br/koala.jpg",
CURLOPT_UPLOAD => 1,
CURLOPT_INFILE => $putFileHandle,
CURLOPT_INFILESIZE => $putFileSize
)
));
$client->request("PUT");
Verificando no servidor B, vi que a imagem foi transferida normalmente.
Mas a aplicação local sempre retorna um erro:
Exception information:
Message: Error in cURL request:
Stack trace:
#0 C:\wamp\www\teste\library\Zend\Http\Client.php(987): Zend_Http_Client_Adapter_Curl->write('PUT', Object(Zend_Uri_Http), '1.1', Array, '')
#1 C:\wamp\www\teste\application\controllers\IndexController.php(70): Zend_Http_Client->request('PUT')
#2 C:\wamp\www\teste\library\Zend\Controller\Action.php(513): IndexController->testeAction()
#3 C:\wamp\www\teste\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('testeAction')
#4 C:\wamp\www\teste\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#5 C:\wamp\www\teste\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#6 C:\wamp\www\teste\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#7 C:\wamp\www\teste\public\index.php(33): Zend_Application->run()
#8 {main}
Seria assim mesmo a utilização dessa classe?
Cliente ou servidor?
Carlos Eduardo