O PHP integra o acesso a dois protocolos, XML-RPC e SOAP, ambos concentrados na extensão xmlrpc. Além disso, no PEAR do PHP, seja PHP 4 ou PHP 5, a extensão XML-RPC foi integrada por padrão, e esta extensão não tem nada a ver com a extensão xmlrpc e pode implementar de forma independente a interação do protocolo XML-RPC, se houver. não há extensão xmlrpc, é recomendado usar a extensão PEAR::XML-RPC.
Introdução ao Web Service
O Web Service foi criado para a comunicação de sistemas heterogêneos. Sua idéia básica é utilizar chamadas remotas HTTP baseadas em XML para fornecer um mecanismo padrão, eliminando a necessidade de estabelecer um novo protocolo. Atualmente, existem dois padrões de protocolo para comunicação de Web Services, um é XML-RPC e o outro é SOAP. XML-RPC é relativamente simples e apareceu antes, enquanto SOAP é mais complexo e é usado principalmente quando são necessárias estabilidade, robustez, segurança e interações complexas.
Aqui usamos principalmente XML-RPC para descrever brevemente o processo de interação do Web Service. Parte do conteúdo vem do manual do PHP. Para mais detalhes, é recomendável consultar o manual.
Instale a extensão xmlrpc
Se a extensão xmlrpc php não estiver instalada em seu sistema, instale-a corretamente.
Na plataforma Windows, primeiro coloque a extensão php_xmlrpc.dll no diretório de instalação do PHP no diretório C:Windows ou C:Winnt (a extensão para PHP4 está no diretório C:phpextensions, e a extensão para PHP5 está no diretório C:phpext), e remova o ponto e vírgula ";" na frente de extension=php_xmlrpc.dll em C:Windowsphp.ini ou C:Winntphp.ini, então reinicie o servidor web e verifique phpinfo () Se existe um projeto XML-RPC pode determinar se a extensão xmlrpc foi instalada corretamente.
Na plataforma Unix/Linux, se a extensão xmlrpc não estiver instalada, recompile o PHP, adicione a opção --with-xmlrpc ao configurar e então verifique phpinfo() para ver se o xmlrpc está instalado normalmente.
(Nota: As operações a seguir são baseadas na instalação normal da expansão xmlrpc. Certifique-se de instalá-la corretamente.)
Princípio de funcionamento do XML-RPC
XML-RPC geralmente significa que todo o processo usa XML para comunicação. Primeiro, um servidor RPC é construído para processar solicitações encapsuladas em XML passadas do cliente RPC e os resultados do processamento são retornados ao cliente RPC na forma de XML. O cliente então analisa o XML para obter os dados necessários.
O lado do servidor do XML-RPC deve ter funções prontas para o cliente chamar, e as funções e métodos na solicitação enviada pelo cliente devem ser consistentes com os do lado do servidor, caso contrário os resultados necessários não serão obtidos.
Abaixo faço um código simples para descrever todo o processo.
O
servidor de prática XML-RPC usa a função xmlrpc_server_create para gerar um servidor, então registra a interface de chamada RPC que precisa ser exposta, aceita os dados XML POST do cliente RPC e, em seguida, os processa. Os resultados do processamento são exibidos para o cliente. na forma de XML.
O código é o seguinte: rpc_server.php
<?php
/**
* Função: função fornecida para ser chamada pelo cliente RPC
* Parâmetros:
* $method é a função que o cliente precisa chamar
* $params é o array de parâmetros da função que o cliente precisa chamar.
* Return: Retorna o resultado da chamada especificado
*/
função rpc_server_func($método, $params) {
$parâmetro = $params[0];
if ($parâmetro == "obter"){
$return = ''Estes dados pelo método get'';
}outro{
$return = ''Não especifica método ou parâmetros'';
}
retornar $ retorno;
}
//Gera um lado do servidor XML-RPC
$xmlrpc_server = xmlrpc_server_create();
//Registra um método rpc_server chamado pelo servidor, que na verdade aponta para a função rpc_server_func
xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func");
//Aceita dados XML POST do cliente
$request = $HTTP_RAW_POST_DATA;
//Obtém o resultado da execução após executar a solicitação XML chamando o cliente
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);
//Exibe o resultado XML após o processamento da função;
header(''Tipo de conteúdo: texto/xml'');
echo $xmlrpc_response;
//Destruir recursos do lado do servidor XML-RPC
xmlrpc_server_destroy($xmlrpc_server);
?>
Após a construção do lado do servidor, vamos construir nosso cliente RPC. O cliente acessa a porta 80 do servidor XML-RPC aproximadamente por meio do Socket, então encapsula a interface RPC que precisa ser chamada em XML, envia-a ao servidor RPC por meio de uma solicitação POST e, finalmente, obtém o resultado retornado pelo servidor.
O código é o seguinte: rpc_client.php
<?php
/**
* Função: Função fornecida ao cliente para conectar-se ao servidor XML-RPC
* Parâmetros:
* $host O host que precisa ser conectado
* $port porta para conectar ao host
* $rpc_server Arquivo XML-RPC do lado do servidor
* $request informações de solicitação XML encapsuladas
* Retorno: Se a conexão for bem-sucedida, as informações XML retornadas pelo servidor serão retornadas. Se a conexão for bem-sucedida, retornará falso.
*/
function rpc_client_call($host, $port, $rpc_server, $request) {
//Abre o servidor especificado
$fp = fsockopen($host, $port);
//Constrói as informações da solicitação POST da consulta do servidor XML-RPC que precisa se comunicar
$query = "POST $rpc_server HTTP/1.0nUser_Agent: Cliente XML-RPCnHost: ".$host."nTipo de conteúdo: text/xmlnComprimento de conteúdo: ".strlen($request)."n n".$request."n";
//Envia o protocolo HTTP construído para o servidor e retorna false se falhar.
if (!fputs($fp, $query, strlen($query))) {
$errstr = "Erro de gravação";
retornar falso;
}
//Obtém todas as informações retornadas do servidor, incluindo cabeçalhos HTTP e informações XML
$conteúdo = '''';
enquanto (!feof($fp)){
$conteúdo .= fgets($fp);
}
//Retorna o conteúdo obtido após fechar o recurso de conexão
fclose($fp);
return $conteúdo;
}
//Constrói informações para conectar ao servidor RPC
$host = ''localhost'';
$porta = 80;
$rpc_server = ''/~heiyeluren/rpc_server.php'';
//Codifique a solicitação XML que precisa ser enviada para XML. O método que precisa ser chamado é rpc_server e o parâmetro é get.
$request = xmlrpc_encode_request(''rpc_server'', ''get'');
//Chama a função rpc_client_call para enviar todas as solicitações ao servidor XML-RPC e obter as informações
$response = rpc_client_call($host, $port, $rpc_server, $request);
//Analise o XML retornado do servidor, remova as informações do cabeçalho HTTP e converta o XML em uma string que o PHP possa reconhecer
$split = ''<?xml version="1.0" encoding="iso-8859-1"?>'';
$xml = explodir($dividir, $resposta);
$xml = $array_pop($xml);
$response = xmlrpc_decode($xml);
//Exibe as informações obtidas do servidor RPC
print_r($resposta);
?>
Grosso modo, nosso exemplo acima é enviar um método chamado rpc_server, o parâmetro é get e, em seguida, obter o retorno do servidor. Os dados XML retornados pelo servidor são:
<?xml version="1.0" encoding=". iso-8859-1 "?>
<métodoResposta>
<parâmetros>
<parâmetro>
<valor>
<string>Esses dados pelo método get</string>
</valor>
</param>
</params>
</methodResponse>
Em seguida, codificamos esse XML em uma string PHP por meio da função xmlrpc_decode e podemos processá-lo à vontade, e toda a interação do Web Service é concluída.
Conclusão
Quer seja XML-RPC ou SOAP, desde que nos permita fazer chamadas de processos remotos de forma estável e segura e concluir nosso projeto, todo o serviço Web será bem-sucedido. Além disso, se possível, você também pode tentar usar XML-RPC no PEAR para implementar operações semelhantes acima. Pode ser mais simples e adequado para você.
Basta usar XML-RPC para interação com o Web Service. Para alguns códigos, consulte o manual do PHP. Se desejar obter informações detalhadas, é recomendável consultar o manual.
Este artigo vem do link original de informações do PHP: http://www.phpchina.com/html/84/n-33884.html