返回顶部
首页 > 资讯 > 精选 >CentOS SOAP扩展模块触发Service端执行相应的操作是怎样的
  • 762
分享到

CentOS SOAP扩展模块触发Service端执行相应的操作是怎样的

2023-06-16 23:06:35 762人浏览 八月长安
摘要

Centos SOAP扩展模块触发Service端执行相应的操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。从PHP5开始内置CentOS SOAP扩

Centos SOAP扩展模块触发Service端执行相应的操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

PHP5开始内置CentOS SOAP扩展模块,通过它,我们可以方便的向Service发送一个CentOS SOAP消息,从而触发Service端执行相应的操作,并将结果返回;

首先,要确保安装了CentOS SOAP扩展,没有安装的表现是,当运行使用了soapclient的代码时候会有php error Class ‘SoapClient’ not found的错误;这时候应该安装php-soap,在CentOS SOAP上可以方便的使用yum更新安装包>yum install php-soap更新过这些安装包后,需要重新启动一下apache服务,此后SoapClient类就可以用在php script中了下边是使用过程中的一个范例:

<?php $client = new SoapClient("some.wsdl");   $client->SomeFunction($a, $b, $c);  $arr= $client->__soapCall("SomeFunction", array($a, $b, $c));   print_r($arr);  ?>

in WSDL mode,soapCall应用WEB service,例子用的是asp.net的web service,提供service.asmx页面,调用及查看都比较简单,手册上的example也大多是这个类型,比较简单

CentOS SOAP发送的协议:

POST /servicepath/service.asmx Http/1.1   Host: 211.186.1.4   Content-Type: text/xml; charset=utf-8   Content-Length: length   SOAPAction: "http://211.186.5.15/Service/ServiceMethod"
<?xml version="1.0" encoding="utf-8"?>   <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body>   <ServiceMethod xmlns="http://211.186.5.15/Service">   <param1>string</param1>   <param2>string</param2>   <param3>string</param3>   </ServiceMethod>   </soap:Body>   </soap:Envelope>

调用方法:

$client = new SoapClient("http://www.xxx.com/service/service.asmx?WSDL");   //向SOAP服务方发送参数值   $param1 = "p1";   $param2 = "p2";   $param3 = "p3";

//serviceParam1,serviceParam2,serviceParam3为发送参数值所对应的参数名(或service端提供的字段名) $param = array('serviceParam1' => $param1,'serviceParam2' => $param2,'serviceParam3' => $param3);

//方法名为ServiceMethod,参数数组为$param,默认以parameters字段标示传递的参数数组 $arr = $client->__soapCall('ServiceMethod',array('parameters' => $param)); print_r($arr);

此处,print_r($arr)打印出来的是一个对象,类似于

stdClass Object   ( [BindValidateResult] => 01062947546 )

经过我多次的尝试,发现使用$arr[1],$arr[0],$arr[BindValidateResult]均不能取得有效值;后来查询到通过$arr->BindValidateResult可以访问到返回值;

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: CentOS SOAP扩展模块触发Service端执行相应的操作是怎样的

本文链接: https://lsjlt.com/news/285986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • CentOS SOAP扩展模块触发Service端执行相应的操作是怎样的
    CentOS SOAP扩展模块触发Service端执行相应的操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。从PHP5开始内置CentOS SOAP扩...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作