recherche

PHP中集成了XML-RPC和SOAP两种Web Service通信两种协议标准,基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。其实这在实际开发应用中是非常实用,比如PC客户端或者现在流行的手机客户端需要同服务器端通信,这时候XML-RPC就是一个很好的解决办法。这里记一下的PHP中如何使用XML-RPC的笔记,虽然这种方式运用的不多。基本原理就是XML-RPC使用XML来进行通信。首先构造一个RPC 服务器端用来出来从RPC客户端传递过来的使用XML封装的请求,并且把处理结果通过XML的形式返回给RPC客户端,客户端就去分析XML获取自己需要的数据。XML-RPC的服务器端必须有现成的函数提供给客户端调用,并且客户端提交的请求中的函数和方法必须和服务器端的一致,否则将无法获取所需要的结果。首先要确保你的PHP支持XML-RPC扩展,如果没有可以请安装,windows下php_xmlrpc.dll放到你的PHP扩展目录下,Linux重新编译PHP,在configure的时候请加入 –with-xmlrpc 选项,因为我用的是Ubuntu,所以直接 sudo apt-get install php5-xmlrpc就可以了。服务器段代码如下,注释详细:
/* server.php
* @function 提供给RPC客户端调用的函数
* @param   string  $method 客户端需要调用的函数
* @param   array   $params 客户端需要调用的函数的参数数组
* return   string  返回调用结果
*/
function rpc_server_func($method, $params) {
$parameter = $params[0];
if ($parameter == "get") {
$return = 'This data by get method';
} else {
$return = 'Not specify method or params';
}
return $return;
}

//产生XML-RPC的服务器端
$xmlrpc_server = xmlrpc_server_create();
//注册一个服务器端调用的方法rpc_server,实际指向的是rpc_server_func函数
xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func");
//接受客户端POST过来的XML数据
$request = $HTTP_RAW_POST_DATA;
//执行调用客户端的XML请求后获取执行结果
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);
//把函数处理后的结果XML进行输出
header('Content-Type: text/xml');
echo $xmlrpc_response;
//销毁XML-RPC服务器端资源
xmlrpc_server_destroy($xmlrpc_server);

/* client.php
* @function    提供给客户端进行连接XML-RPC服务器端的函数
* @param   string  $host  需要连接的主机
* @param   string  $port  连接主机的端口
* @param   string  $rpc_server XML-RPC服务器端文件
* @param   $request  封装的XML请求信息
* return   成功返回由服务器端返回的XML信息,失败返回false
*/
function rpc_client_call($host, $port, $rpc_server, $request) {
//打开指定的服务器端
$fp = fsockopen($host, $port);
//构造需要进行通信的XML-RPC服务器端的查询POST请求信息
$query = "POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: " . $host . "\nContent-Type: text/xml\nContent-Length: " . strlen($request) . "\n\n" . $request . "\n";
//把构造好的HTTP协议发送给服务器,失败返回false
if (!fputs($fp, $query, strlen($query))) {
$errstr = "Write error";
return false;
}
//获取从服务器端返回的所有信息,包括HTTP头和XML信息
$contents = "";
while (!feof($fp)) {
$contents .= fgets($fp);
}
//关闭连接资源后返回获取的内容
fclose($fp);
return $contents;
}
//构造连接RPC服务器端的信息
$host = 'localhost';
$port = 80;
$rpc_server = 'server.php';
//把需要发送的XML请求进行编码成XML,需要调用的方法是rpc_server,参数是get
$request = xmlrpc_encode_request('rpc_server', 'get');
//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息
$response = rpc_client_call($host, $port, $rpc_server, $request);
//分析从服务器端返回的XML,去掉HTTP头信息,并且把XML转为PHP能识别的字符串
$split = "";
$xml = explode($split, $response);
$xml = $split . array_pop($xml);
$response = xmlrpc_decode($xml);
//输出从RPC服务器端获取的信息
print_r($response);

通过过xmlrpc_decode函数把这个XML编码为PHP的字符串以便处理,整个Web Service交互完成。XML-RPC函数参考:
  • xmlrpc_decode_request — 将 XML 译码为 PHP 本身的类型
  • xmlrpc_decode — 将 XML 译码为 PHP 本身的类型
  • xmlrpc_encode_request — 为 PHP 的值生成 XML
  • xmlrpc_encode — 为 PHP 的值生成 XML
  • xmlrpc_get_type — 为 PHP 的值获取 xmlrpc 的类型
  • xmlrpc_is_fault — Determines if an array value represents an XMLRPC fault
  • xmlrpc_parse_method_descriptions — 将 XML 译码成方法描述的列表
  • xmlrpc_server_add_introspection_data — 添加自我描述的文档
  • xmlrpc_server_call_method — 解析 XML 请求同时调用方法
  • xmlrpc_server_create — 创建一个 xmlrpc 服务端
  • xmlrpc_server_destroy — 销毁服务端资源
  • xmlrpc_server_register_introspection_callback — 注册一个 PHP 函数用于生成文档
  • xmlrpc_server_register_method — 注册一个 PHP 函数用于匹配 xmlrpc 方法名
  • xmlrpc_set_type — 为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间

  • 以上就介绍了PHP中XML-RPC使用笔记,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    Déclaration
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    L'utilisation continue de PHP: raisons de son enduranceL'utilisation continue de PHP: raisons de son enduranceApr 19, 2025 am 12:23 AM

    Ce qui est encore populaire, c'est la facilité d'utilisation, la flexibilité et un écosystème fort. 1) La facilité d'utilisation et la syntaxe simple en font le premier choix pour les débutants. 2) étroitement intégré au développement Web, excellente interaction avec les demandes HTTP et la base de données. 3) L'énorme écosystème fournit une multitude d'outils et de bibliothèques. 4) La nature active et la nature open source les adaptent à de nouveaux besoins et tendances technologiques.

    PHP et Python: explorer leurs similitudes et leurs différencesPHP et Python: explorer leurs similitudes et leurs différencesApr 19, 2025 am 12:21 AM

    PHP et Python sont tous deux des langages de programmation de haut niveau qui sont largement utilisés dans le développement Web, le traitement des données et les tâches d'automatisation. 1.Php est souvent utilisé pour créer des sites Web dynamiques et des systèmes de gestion de contenu, tandis que Python est souvent utilisé pour créer des cadres Web et une science des données. 2.PHP utilise Echo pour sortir du contenu, Python utilise l'impression. 3. Les deux prennent en charge la programmation orientée objet, mais la syntaxe et les mots clés sont différents. 4. PHP prend en charge la conversion de type faible, tandis que Python est plus strict. 5. L'optimisation des performances PHP comprend l'utilisation de la programmation OPCACH et asynchrone, tandis que Python utilise la programmation CPROFILE et asynchrone.

    PHP et Python: différents paradigmes expliquésPHP et Python: différents paradigmes expliquésApr 18, 2025 am 12:26 AM

    PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

    PHP et Python: une plongée profonde dans leur histoirePHP et Python: une plongée profonde dans leur histoireApr 18, 2025 am 12:25 AM

    PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

    Choisir entre PHP et Python: un guideChoisir entre PHP et Python: un guideApr 18, 2025 am 12:24 AM

    PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

    PHP et frameworks: moderniser la languePHP et frameworks: moderniser la langueApr 18, 2025 am 12:14 AM

    PHP reste important dans le processus de modernisation car il prend en charge un grand nombre de sites Web et d'applications et d'adapter les besoins de développement via des cadres. 1.Php7 améliore les performances et introduit de nouvelles fonctionnalités. 2. Des cadres modernes tels que Laravel, Symfony et Codeigniter simplifient le développement et améliorent la qualité du code. 3. L'optimisation des performances et les meilleures pratiques améliorent encore l'efficacité de l'application.

    Impact de PHP: développement Web et au-delàImpact de PHP: développement Web et au-delàApr 18, 2025 am 12:10 AM

    PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

    Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Apr 17, 2025 am 12:25 AM

    Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

    See all articles

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    Listes Sec

    Listes Sec

    SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

    PhpStorm version Mac

    PhpStorm version Mac

    Le dernier (2018.2.1) outil de développement intégré PHP professionnel

    Télécharger la version Mac de l'éditeur Atom

    Télécharger la version Mac de l'éditeur Atom

    L'éditeur open source le plus populaire

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    Puissant environnement de développement intégré PHP