相关文章

更多

最近更新

更多

Web Service PHP入门示例

2019-04-26 15:49|来源: 网路

Web Service 实例


任何应用程序都可拥有 Web Service 组件。

Web Service 的创建与编程语言的种类无关。

本章节我们将为大家介绍使用 PHP 的 SOAP 扩展来创建 Web Service。

SOAP有两种操作方式,NO-WSDL 与 WSDL。

  • NO-WSDL模式:使用参数来传递要使用的信息。

  • WSDL模式: 使用WSDL文件名作为参数,并从WSDL中提取服务所需的信息。


一个实例:PHP Web Service

在开始实例前,我们需要确定PHP是否安装了 SOAP 扩展。查看 phpinfo,出现以下信息表明已经安装了 SOAP 扩展:

在这个例子中,我们会使用 PHP SOAP 来创建一个简单的 Web Service。

服务端 Server.php 文件代码如下:

<?php 
// SiteInfo 类用于处理请求Class SiteInfo{
    /**
     *    返回网站名称
     *    @return string 
     *
     */
    public function getName(){
        return "领悟书生教程网";
    }

    public function getUrl(){
        return "www.656463.com";
    }}
    // 创建 SoapServer 对象$s = new SoapServer(null,array("location"=>
    "http://localhost/soap/Server.php","uri"=>"Server.php"));
    // 导出 SiteInfo 类中的全部函数$s->setClass("SiteInfo");
    // 处理一个SOAP请求,调用必要的功能,并发送回一个响应。$s->handle();?>


客户端 Client.php 文件代码如下:

<?phptry{
  // non-wsdl方式调用web service
  // 创建 SoapClient 对象
  $soap = new SoapClient(null,array('location'=>"http://localhost/soap/Server.php",'uri'=>'Server.php'));
  // 调用函数 
  $result1 = $soap->getName();
  $result2 = $soap->__soapCall("getUrl",array());
  echo $result1."<br/>";
  echo $result2;} catch(SoapFault $e){
  echo $e->getMessage();}catch(Exception $e){
  echo $e->getMessage();}


这时我们访问 http://localhost/soap/Client.php,即可看到结果

相关问答

更多
  • 以下是一些可帮助您入门的链接: http://davidwalsh.name/web-service-php-mysql-xml-json http://www.ibm.com/developerworks/opensource/tutorials/os-php-webservice/ Here are some links to get you started: http://davidwalsh.name/web-service-php-mysql-xml-json http://www.ibm.com ...
  • 使用curl函数: http://php.net/manual/en/book.curl.php 假设您正在使用GET请求连接到RESTful API: $url = "http://the-api-you-want/?the-args=your-args&another-arg=another-arg"; $ch = curl_init(); // start CURL curl_setopt($ch, CURLOPT_URL, $url); // set your URL curl_setopt($c ...
  • 好吧,让我们忘记队列和服务器之间的通信。 客户端通过WS1(同步com)向服务器1发送请求。 服务器1中的进程写入队列。 服务器1中的进程等待队列中的答案。 此时,我担心,由于与客户端的通信是同步的,客户端应该等待。 怎么样? Thread.sleep是一个解决方案。 客户应该等多少钱? 这取决于: 服务器2中的频率过程读取队列 通过WS2到服务器1呼叫服务器的时间 服务器处理请求的时间。 服务器1中的频率过程读取队列以寻找来自服务器2的答案 所以,你可以使用一个循环: 问队列的答案 如果答案在那里,很好, ...
  • 这是通用的WCF“发生了一些不好的事”错误消息。 这不会有太大帮助。 处理办法: 确保您调用的Web服务自行运行 - 否则解决它! 通过在WCF服务中包含错误详细信息(如在错误消息中所述)启用详细错误信息( 仅在DEV环境中执行此操作!从不在生产中...) 尝试在Visual Studio中启动WCF服务并调试正在发生的事情 为了启用详细的错误报告,您需要将此部分添加到WCF服务的配置中:
    如果您没有安装SoapClient,那么我会推荐nuSoap 。 If you don't have SoapClient installed then I would recommend nuSoap.
  • 你研究了什么? 让我谷歌那个为你: php netbeans xdebug 第二个结果是在NetBeans IDE中调试PHP源代码 在该教程中,它链接到如何为NetBeans设置XAMPP(而不是WAMP)的教程 。 Thanks for the link provided in your comments, now it works, here is the config in the php.ini [xdebug] xdebug.remote_enable = on xdebug.remote_ha ...
  • 一个简单的例子,希望它有帮助...... $service1 = new SoapClient('https://www.agemni.com/AgemniWebservices/service1.asmx'); //here you instanciate your object with those properties $entity = new Entity(); $entity->strUsername = 'José'; $entity->strPassword = '123'; $entit ...
  • CXF有能力开箱即用。 CXF端点可以在调用程序上配置工厂,用于获取调用的Object。 开箱即用,有一个PooledFactory可以维护一个实例池。 可以将其设置为不创建超出最大值的其他实例,从而等待释放更多实例。 这可以扼杀一些东西。 您可以通过spring配置或通过impl上的注释来配置它: @FactoryType(value=FactoryType.Type.POOLED, args={"25"}) (25是游泳池的最大尺寸) 但是,这在处理上已经很晚了。 当它到达那里时,所有的XML都已被解 ...
  • 您可以查看本教程 ,了解如何使用php开发Web服务。 正如您所提到的,.NET客户端将非常简单。 You can take a look at this tutorial showing how to develop a web service using php. The .NET client will be pretty straightforward as you mentioned.
  • 因此, 您链接的文档与指南最接近。 它没有太多的手持,但应该足以让你去 - 它甚至带有一个示例客户端脚本 。 简而言之, 默认情况下启用Web服务 ,它使用JSON RPC协议响应远程调用的HTTP请求。 您可以在Scrapy项目中启动scrapy shell后尝试将浏览器指向: http:// localhost:6080 。 您应该看到一个显示可用资源的页面: {"resources": ["enginestatus", "stats", "crawler"]} 从这一点开始,您将了解更多JSON R ...