您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

webservice之PHP里如何正确使用soap

时间:2020-05-16 12:01:11  来源:  作者:

soap协议这个古老的通过wsdl文件通讯的协议,使用极其不方便,但是还有一些顽固的国企在使用,没办法,有一些需求必须跟他们对接接口,怎么办呢,在使用soap协议调用时候,php在这方面资料很少,很容易用错。

目前在PHP业界有两种使用方法:

一、使用soap扩展调用

二、引入lib/nusoap.php库,来操作

 

今天我重点来介绍的是第一种使用办法,第二种已经落后于时代了,不建议使用。

特别注意:

php里面还有nowsdl的调用方式,不建议使用,原因:使用nowsdl过程发现只有php业务能正常通讯,其他语言调用服务无法正常使用,不能跨语言。

 

我今天给大家介绍的是通过wsdl文件生成的soap服务,wsdl文件怎么生成可以使用zend工具。

 

具体来看代码:

command.php就是soap的服务端

client.php 是客户端

command.wsdl文件

 

command.php


ini_set("soap.wsdl_cache_enabled", "0");

Class WebService

{

private $returnSuccess = 'success';

private $returnFail = 'fail';

public function command($param = []){

return ['return' => $this->returnSuccess.json_encode($param)];

}

}

//这里可以用外部生成好的wsdl文件

$server = new SoapServer('command.wsdl', ['uri' => "command.php", 'encoding' => 'utf-8']);

//设置服务类名

$server->setClass("WebService");

$server->handle();

client.php


 

header('Content-Type: text/xml; charset=UTF-8');

$client = new SoapClient(

'http://127.0.0.1:8003/cmd-service/command.php?wsdl',

['encoding' => 'utf-8', 'cache_wsdl' => 0, 'compression' => true]

);

try {

$param =['enterpriseId' => 2,'randVal' => '111'];

//这里一定要加上parameters

$result = $client->__soapCall("command", ['parameters' => $param]);

} catch (Exception $e) {

echo $e->getMessage();exit;

}

echo $result->return;


command.wsdl文件

SoapDiscovery.class.php  下载这个类库去生成  或者 用zend生成

require_once('command.php');

define('WSDL_FILE','command.wsdl');
if(!file_exists(WSDL_FILE)){
        require_once('SoapDiscovery.class.php');
        $sd = new SoapDiscovery('WebService', 'command');
        $str = $sd->getWSDL();
        file_put_contents(WSDL_FILE, $str);
}


Tags:soap   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
两个独立的应用程序需要中介程序才能相互通信。 因此,开发人员经常建立桥梁-应用程序编程接口-来允许一个系统访问另一个系统的信息或功能。为了快速,大规模地集成应用程序,使...【详细内容】
2020-12-01  Tags: soap  点击:(180)  评论:(0)  加入收藏
soap协议这个古老的通过wsdl文件通讯的协议,使用极其不方便,但是还有一些顽固的国企在使用,没办法,有一些需求必须跟他们对接接口,怎么办呢,在使用soap协议调用时候,php在这方面资...【详细内容】
2020-05-16  Tags: soap  点击:(58)  评论:(0)  加入收藏
▌简易百科推荐
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  小程序软件开发    Tags:管理系统   点击:(34)  评论:(0)  加入收藏
准备安装包(PHP: Hypertext Preprocessor)下载安装包以及组件wget https://www.php.net/distributions/php-8.0.0.tar.bz2wget https://github.com/phpredis/phpredis/archive...【详细内容】
2021-11-09  mimic96    Tags:PHP   点击:(40)  评论:(0)  加入收藏
golang context 很好用,就使用php实现了github地址 : https://github.com/qq1060656096/php-go-context context使用闭坑指南1. 将一个Context参数作为第一个参数传递给传入和...【详细内容】
2021-11-05  1060656096    Tags:PHP   点击:(41)  评论:(0)  加入收藏
一段数组为例:$list = array:4 [ 0 => array:7 [ "id" => 56 "mer_id" => 7 "order_id" => "wx163265961408769974" "is_postage" => 0 "store_name" => "奇...【详细内容】
2021-09-29  七七小影视    Tags:PHP   点击:(65)  评论:(0)  加入收藏
利用JS的CryptoJS 3.x和PHP的openssl_encrypt,openssl_decrypt实现AES对称加密解密,由于需要两种语言对同一字符串的操作,而CryptoJS 的默认加密方式为“aes-256-cbc”,PHP端也...【详细内容】
2021-09-16  李老师tome    Tags:对称加密   点击:(79)  评论:(0)  加入收藏
1、checkdate()验证格利高里日期即:日期是否存在。checkdate(month,day,year);month必需。一个从 1 到 12 的数字,规定月。day必需。一个从 1 到 31 的数字,规定日。year必需。...【详细内容】
2021-08-31  七七小影视    Tags:时间函数   点击:(80)  评论:(0)  加入收藏
对于各类开发语言来说,整数都有一个最大的位数,如果超过位数就无法显示或者操作了。其实,这也是一种精度越界之后产生的精度丢失问题。在我们的 PHP 代码中,最大的整数非常大,我...【详细内容】
2021-08-26  硬核项目经理    Tags:PHP   点击:(83)  评论:(0)  加入收藏
遵从所有教材以及各类数据结构相关的书书籍,我们先从线性表开始入门。今天这篇文章更偏概念,是关于有线性表的一个知识点的汇总。上文说过,物理结构是用于确定数据以何种方式存...【详细内容】
2021-07-19  硬核项目经理    Tags:线性表   点击:(94)  评论:(0)  加入收藏
一、开启IIS全部功能。二、部署PHP1.官网下载并解压PHP: https://windows.php.net/downloads/releases/2.将php.ini-development文件改为php.ini3.修改php.ini(1)去掉注释,并修...【详细内容】
2021-07-15  炘蓝火诗  今日头条  Tags:PHP环境   点击:(129)  评论:(0)  加入收藏
一、环境说明本文中使用本地VM虚机部署测试。OS:CentOS Linux release 7.8.2003 (Core)虚机配置:2核CPU、4G内存①系统为CentOS 7.8 x64最小化安装,部署前已完成系统初始化、...【详细内容】
2021-06-25  IT运维笔记  今日头条  Tags:PHP8.0.7   点击:(141)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条