加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

常用的调用webservice的方法有哪些?

发布时间:2020-12-17 00:43:10 所属栏目:安全 来源:网络整理
导读:可以根据wsdl文件生成客户端,或者直接根据地址调用。直接调用的话,主要有AXIS和SOAP两种方法 ? 我们可以调用哪些操作,这些操作需要的参数是什么? 参数的数据类型定义是什么? ? ?? ?? ?? ?要搞清楚这两点,我们当然可以去直接阅读 WSDL 文件,但由于 WSD

可以根据wsdl文件生成客户端,或者直接根据地址调用。直接调用的话,主要有AXIS和SOAP两种方法
?

  • 我们可以调用哪些操作,这些操作需要的参数是什么?
  • 参数的数据类型定义是什么?

? ?? ?? ?? ?要搞清楚这两点,我们当然可以去直接阅读 WSDL 文件,但由于 WSDL??文件可能会很复杂,所以有的时候要弄清楚这些问题可能会花费不少的时间;另外,有些时候我们还没有办法得到 WSDL??文件。当然还存在其他方法,SoapClient 类中提供了两个很有用的成员函数可以让我们轻松获得 Web??服务中提供的操作,以及相关的数据结构定义:


? ?? ?? ?? ?


? ?? ?? ?? ?

查看 Web 服务开放的方法和数据类型
print_r( $client->__getFunctions() );
print_r( $client->__getTypes() );

? ?? ?? ?? ?通过这两行代码,我们可以看到浏览器显示的结果:


? ?? ?? ?? ?


? ?? ?? ?? ?

Web 服务开放的方法和数据类型示例

Array
(
??[0] => ProductSpec QuerySpec(ProductQueryCode $QueryCode)
)
Array
(
??[0] => struct ProductQueryCode {
? ? string ProductCode;
??}
??[1] => struct ProductSpec {
? ? string ProductCode;
? ? string CPU;
? ? string RAM;
? ? string Screen;
? ? string HDD;
??}
)


? ?? ?? ?? ?于是我们可以知道,我们可以调用 Web 服务中的 QuerySpec 操作,并且得知了这个操作的输入和输出数据的定义。这个时候我们就可以着手编写调用 QuerySpec 的代码了。下面两个语句都可以完成调用的功能,它们的作用是等效的:


? ?? ?? ?? ?


? ?? ?? ?? ?

调用 Web 服务开放的操作
$result = $client->__soapCall('QuerySpec',array( array( "ProductCode" => '1175-PXA') ) );
$result = $client->QuerySpec( array( array( "ProductCode" => '1175-PXA') ) );

? ?? ?? ?? ?可以直接使用 Web 服务中的操作名称作为函数进行调用,就像真的在调用本地定义的函数一样,这种方法比较直观;也可以把操作名称作为参数传给 SoapClient::__soapCall(),效果是一样的。


? ?? ?? ?? ?需要注意的依然是参数的结构。和服务端一样,输入的参数依然需要组织成数组的形式,但是有一点点不同,已定义好的数组又被放入了最外层的数组中。看起来最外面的一层包装似乎有些多余,但是如果去掉,程序是不会得到正确结果的。


? ?? ?? ?? ?最后我们需要使用 Web 服务端返回的结果。与前面提到的类似,服务端返回的数据也是以对象嵌套的方式组织的,所以我们只需要用成员引用操作符 (->) 即可获得相应域的值:


? ?? ?? ?? ?


? ?? ?? ?? ?

使用 SOAP 应答中的数据
echo "Product Code:" . $client->ProductCode . "<br />";
echo "Product Code:" . $client->CPU . "<br />";
echo "Product Code:" . $client->RAM . "<br />";
echo "Product Code:" . $client->Screen . "<br />";
echo "Product Code:" . $client->HDD . "<br />";

? ?? ?? ?? ?稍加修改,我们就可以得到之前给出的在浏览器中的显示效果了。


? ?? ?? ?? ?到这里我们的工作似乎已经结束了。但是实际的开发过程是不可能如此顺利的,如果我们的代码没有得到正确的结果怎么办?所以,我们需要了解一些使用 PHP 开发 SOAP 应用程序时的用到的调试知识。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读