当前位置: 首页 > 编程笔记 >

PHP实现Soap通讯的方法

孙嘉悦
2023-03-14
本文向大家介绍PHP实现Soap通讯的方法,包括了PHP实现Soap通讯的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了PHP实现Soap通讯的方法。分享给大家供大家参考。具体实现方法如下:

<?php

function HttpSoap($server, $port, $url, $namespace, $action, $data) {

$fp = @fsockopen($server, $port);

if (!$fp) {

return FALSE;

} else {

$soapData = ConstructData($namespace, $action, $data);

$length = strlen($soapData);

$out = "POST $url HTTP/1.1\r\n";

$out .= "Host: $server\r\n";

$out .= "Content-Type: text/xml; charset=utf-8\r\n";

$out .= "Content-Length: $length\r\n";

$out .= "SOAPAction: \"$namespace$action\"\r\n\r\n";

$out .= $soapData;

$out .= "\r\n\r\n";

fputs($fp, $out);

stream_set_timeout($fp, 2);

$header = "";

while($line = trim(fgets($fp))) {

$header .= $line."\n";

}

$dataPos = strpos($header, "Content-Length: ") + 16;

$dataEnd = strpos($header, "\n", $dataPos);

$dataLength = substr($header, $dataPos, $dataEnd - $dataPos);

$data = "";

if($dataLength > 0) {

$data = fread($fp, $dataLength);

}

fclose($fp);

if(strlen($data) != $dataLength || $dataLength <= 0) {

return FALSE;

}

return $data;

}

}

function ConstructData($namespace, $action, $data) {

$soapData = "

<?xml version="1.0\" encoding=\"utf-8\"?>

\r\n";

$soapData .= "<soap:Envelope xmlns:xsi=\http://www.w3.org/2001/XMLSchema-instance\ xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"\r\n'>http://schemas.xmlsoap.org/soap/envelope/\">\r\n";

$soapData .= " <soap:Body>\r\n";

$soapData .= " <$action xmlns=\"$namespace\">\r\n";

foreach($data as $name => $value) {

$name = iconv("GBK","UTF-8",$name);

$value= iconv("GBK","UTF-8",$value);

$soapData .= " <$name>$value</$name>\r\n";

}

$soapData .= " </$action>\r\n";

$soapData .= " </soap:Body>\r\n";

$soapData .= "</soap:Envelope>";

return $soapData;

}

<?

$data=array(

'user'=>'测试', //如果需要输入二进制数据请采用BASE64编码

'pass'=>'test'

); 

echo HttpSoap('sample.anyhost.com', 80, '/sampleSoap.asmx', 'http://tempuri.org/', 'logIn', $data);

?>

希望本文所述对大家的PHP程序设计有所帮助。

 类似资料:
  • 本文向大家介绍PHP使用SOAP扩展实现WebService的方法,包括了PHP使用SOAP扩展实现WebService的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用SOAP扩展实现WebService的方法。分享给大家供大家参考,具体如下: 最近在一个PHP项目中对接外部接口涉及到WebService,搜索引擎上相关文章不是很多,找到的大都是引用一个号称很强大的开源软件

  • 本文向大家介绍PHP实现连接设备、通讯和发送命令的方法,包括了PHP实现连接设备、通讯和发送命令的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下: 开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正: 1. 采用php socket技术使用TCP/IP连接设备 参数$service_p

  • 本文向大家介绍php实现通过soap调用.Net的WebService asmx文件,包括了php实现通过soap调用.Net的WebService asmx文件的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现通过soap调用.Net的WebService asmx文件。分享给大家供大家参考,具体如下: 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现

  • 本文向大家介绍php实现与erlang的二进制通讯实例解析,包括了php实现与erlang的二进制通讯实例解析的使用技巧和注意事项,需要的朋友参考一下 一般来说网络通讯常用的方式有2种:文本通讯和二进制通讯。php与erlang之间实现文本通讯比较简单,这里就不做讨论,本文主要讨论的是php与erlang实现二进制通讯的实现方法。实现步骤如下: erlang端代码: php端代码: 运行正常的情况

  • 本文向大家介绍Python采用socket模拟TCP通讯的实现方法,包括了Python采用socket模拟TCP通讯的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python采用socket模拟TCP通讯的实现方法。分享给大家供大家参考。具体实现方法如下: 对于TCP server端的创建而言,分为如下几个步骤: 创建socket对象(socket):其中两个参数分别为Addr

  • 本文向大家介绍PHP中soap的用法实例,包括了PHP中soap的用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下: PHP 使用soap有两种方式。 一、用wsdl文件 服务器端: 资源描述文件,可以用工具(zend studio)生成。其实就是一个xml文件。 客户端调用: 二、不用wsdl文件 服务器端: 客户端: