大佬教程收集整理的这篇文章主要介绍了[转]php soap操作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
原文: https://www.jianshu.com/p/16b039956cf9
下面,在windows宿主机上面(192.168.123.149上面,访问其webroot目录下面的client2.PHP)
<?PHP try { $client = new SOAPClient(null, [ 'LOCATIOn' => 'http://192.168.123.41:888/server2.PHP', 'uri' => 'http://192.168.123.41:888/server2.PHP', ]); // 直接调用 echo $client->strtolink('192.168.123.41:888') . '<br>'; // 间接调用 // echo $client->__soapCall('strtolink', ['192.168.123.41:888']); } catch (SOAPFault $E) { echo $e->getmessage(); }
tcpdump到192.168.123.41上面抓包
tcpdump tcp port 888 -w soap.pcap
--------------------------------------------------------------------------------------------------------------------
SOAP 简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:
NO-WSDL模式:使用参数来传递要使用的信息
WSDL模式: 使用WSDL文件名作为参数,并从WSDL中提取服务所需的信息。(WSDL文件结构在系统迭代频繁的时候,没有NO-WSDL模式灵活,这里暂时不讲.)
SOAP中主要用到三个类,SOAPServer,SOAPClient,SOAPFault.
server.PHP
<?PHP
class soapHandle
{
public function strtolink($url = '') {
return sprintf('<a href="%s">%s</a>', $url, $url);
}
}
try {
$server = new SOAPServer(null, ['uri' => 'http://127.0.0.1:8002/demo/soap/NO-WSDL/server.PHP']);
$server->setClass('soapHandle');
$server->handle();
} catch (SOAPFault $f) {
echo $f->getmessage();
}
client.PHP
<?PHP
try {
$client = new SOAPClient(null, [
'LOCATIOn' => 'http://127.0.0.1:8002/demo/soap/NO-WSDL/server.PHP',
'uri' => 'http://127.0.0.1:8002/demo/soap/NO-WSDL/server.PHP',
]);
// 直接调用
echo $client->strtolink('www.demo.com') . '<br>';
// 间接调用
echo $client->__soapCall('strtolink', ['www.demo.com']);
} catch (SOAPFault $E) {
echo $e->getmessage();
}
server.PHP
<?PHP
class SOAPHandle
{
public function auth($auth) {
if ($auth->String[0] != 'demo' || $auth->String[1] != '123456') {
throw new SOAPFault('Server', 'No Permission');
}
}
public function strtolink($str = '', $name = '', $openwin = 0) {
$name = $name == '' ? $str : $name;
$openwin_tag = $openwin == 1 ? ' target="_blank" ' : '';
return sprintf('<a href="%s" %s>%s</a>', $str, $openwin_tag, $Name);
}
}
$config = array(
'uri' => 'http://127.0.0.1:8002/demo/soap/NO-WSDL-Header/server.PHP'
);
$objHandle = new SOAPHandle;
// no wsdl mode
try {
$server = new SOAPServer(null, $config);
$server->setObject($objHandle );
$server->handle();
} catch (SOAPFault $f) {
echo $f->faultString;
}
client.PHP
<?PHP
$config = [
'LOCATIOn' => 'http://127.0.0.1:8002/demo/soap/NO-WSDL-Header/server.PHP',
'uri' => 'http://127.0.0.1:8002/demo/soap/NO-WSDL-Header/server.PHP',
'trace' => true
];
try {
$auth = [
'demo',
'123456'
];
// no wsdl
$client = new SOAPClient(null, $config);
/*
* SoapHeader参数说明如下所示:
* 'http://tempuri.org/' namespace(命名空间可省略)
* 'MySoapHeader' SoapHeader头的类名
* 'array(...)' 存放标识身份的字符串参数
* 'true' 是否必须处理该header
*/
$header = new SOAPHeader('http://127.0.0.1:8002/demo/soap/NO-WSDL-Header/server.PHP', 'auth', $auth, false, SOAP_ACTOR_NEXT);
$client->__setSoapHeaders([$header]);
$strtolink = $client->__soapCall('strtolink', [
'http://www.demo.com',
'测试网址',
1
]);
echo $strtolink . '<br>';
} catch (SOAPFault $E) {
echo $e->getmessage();
}
作者:谁不曾年少轻狂过
链接:https://www.jianshu.com/p/16b039956cf9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是大佬教程为你收集整理的[转]php soap操作全部内容,希望文章能够帮你解决[转]php soap操作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。