SOAP Functions 简介警告 本扩展模块是实验性的。该模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。我们提醒您在使用本扩展模块的同时自担风险。 The SOAP extension can be used to write SOAP Servers and Clients. It supports subsets of SOAP 1.1, SOAP 1.2 and WSDL 1.1 specifications.
返回 一个object refer stdClass Object ( [SendResult] => Object reference not set to an instance of an object. )证明我之前的代码的确是没有问题,这个结果是我升级了php到5.05调用系统的soap函数库得到的,和我用pear类库得到的结果完全一致,搞了一下午,一晚上,重看了龙争虎斗,我终于可以确定代码没有问题了,阿门。如果您有兴趣知道关于怎么升级服务器,不妨访问我的blog http://gudai.cnblogs.com
简介警告
本扩展模块是实验性的。该模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。我们提醒您在使用本扩展模块的同时自担风险。
The SOAP extension can be used to write SOAP Servers and Clients. It supports subsets of SOAP 1.1, SOAP 1.2 and WSDL 1.1 specifications.
*{font:12px verdana;}
</style>
<pre>
<?phpinclude("SOAP/Client.php");$oSoap = new SOAP_Client("http://sms.bmcc.com.cn/webservice/smsg.asmx?WSDL");$UserName = $UserName?$UserName:"UserName";
$PassWord = $PassWord?$PassWord:"PassWord";$RanStr=rand();//'取得加密字符窜(可在本地生成)$HashStr=strtoupper(MD5($RanStr & strtoupper(MD5($PassWord))));//'生成HashStr$EntCode = $EntCode?$EntCode:"EntCode";$RanStr = $RanStr?$RanStr:"RanStr";
$HashStr = $HashStr?$HashStr:"HashStr";
$Content = $Content?$Content:"Content";
$MobileNumber = $MobileNumber?$MobileNumber:"MobileNumber";
$SendTime = $SendTime?$SendTime:"SendTime";
$SrcNumber = $SrcNumber?$SrcNumber:"SrcNumber";
$DataType = $DataType?$DataType:"DataType";
$callFunc = "Send";
$DataType = 15;
$params = array(
"EntCode"=>$EntCode,
"UserName"=>$UserName,
"RanStr"=>$RanStr,
"HashStr"=>$HashStr,
"Content"=>$Content,
"MobileNumber"=>$MobileNumber,
"SendTime"=>$SendTime,
"SrcNumber"=>$SrcNumber,
"DataType"=>$DataType
);$options = array('namespace' => 'urn:Send',
'trace' => 1);$sResult=$oSoap->call( $callFunc,$params,$options);//print $oSoap->__get_wire();echo $sResult;
print_R( $sResult);?>
去以下地址下载:http://pear.php.net/SOAP-0[1].9.1 ->SOAP
HTTP_Request-1[1].2.4 -〉HTTP
Net_URL-1[1].0.14 ->Net我这个实例程序是用来从365key取得一个用户的id,然而,得到的始终是00,不知道为什么。
换其他方法也不行,得到的结果始终是空。<style type="text/css">
*{font:12px verdana;}
</style>
<pre>
<?phpinclude("SOAP/Client.php");$oSoap = new SOAP_Client("http://services.365key.com/exportService.asmx?WSDL");$callFunc = "getUserID";
$username = "gu1dai";
$num = 9;
$DataType = 15;
$params = array(
"username"=>$username
);$options = array('namespace' => 'urn:Send',
'trace' => 1);$sResult=$oSoap->call( $callFunc , $params);//print $oSoap->__get_wire();echo $sResult;
print_R( $sResult);?>
测试结果,服务器有响应,如果缺少参数则返回一个缺少参数的错误,将参数补齐后,经过大约20秒的等待,服务器返回一个信息。
Object reference not set to an instance of an object
查了下,这个错误在.net开发的web service中常见,所以我把它作为服务器的错误。并认为代码没有问题。希望有兴趣的兄弟也去测试下。
代码如下。楼主提供的代码已基本被翻译。<style type="text/css">
*{font:12px verdana;}
</style>
<pre>
<?php
require_once("../include/echo.php");
include("SOAP/Client.php");$oSoap = new SOAP_Client("http://sms.bmcc.com.cn/webservice/smsg.asmx?WSDL");$UserName = $UserName?$UserName:"UserName";
$PassWord = $PassWord?$PassWord:"PassWord";$RanStr=rand();//'取得加密字符窜(可在本地生成)$HashStr=strtoupper(MD5($RanStr & strtoupper(MD5($PassWord))));//'生成HashStr$EntCode = $EntCode?$EntCode:"1234";$RanStr = $RanStr?$RanStr:"RanStr";
$HashStr = $HashStr?$HashStr:"HashStr";
$Content = $Content?$Content:"Content";
$MobileNumber = $MobileNumber?$MobileNumber:"13130212312";
$SendTime = $SendTime?$SendTime:"15";
$SrcNumber = $SrcNumber?$SrcNumber:"13912564568";
$DataType = $DataType?$DataType:"15";
$callFunc = "Send";
$DataType = 15;
$params = array(
"EntCode"=>$EntCode,
"UserName"=>$UserName,
"RanStr"=>$RanStr,
"HashStr"=>$HashStr,
"Content"=>$Content,
"MobileNumber"=>$MobileNumber,
"SendTime"=>$SendTime,
"SrcNumber"=>$SrcNumber,
"DataType"=>$DataType
);
pr($params);$sResult=$oSoap->call( $callFunc,$params);echo $sResult;
print_R( $sResult);?>
http://community.csdn.net/Expert/topic/4338/4338855.xml?temp=.8305628
oSoap.ClientProperty("ServerHTTPRequest")=true
oSoap.MSSoapInit("http://sms.bmcc.com.cn/webservice/smsg.asmx?WSDL")'初始化WSDL
====》WINDOWS 系统下应该可以这样用吧new $oSoap=new COM("MSSOAP.SoapClient30");
$oSoap->ClientProperty("ServerHTTPRequest")=true
$oSoap->MSSoapInit("http://sms.bmcc.com.cn/webservice/smsg.asmx?WSDL")'初始化WSDL
$RanStr=rand();//'取得加密字符窜(可在本地生成)
$HashStr=strtoupper(MD5($RanStr & strtoupper(MD5('100096'))));//'生成HashStr
$strRequest="EntCode=62015046&UserName=快乐文化&RanStr=${RanStr}&HashStr=${HashStr}&Content=test&MobileNumber=13556870911&SendTime=&SrcNumber=62015046&DataType=14" ;
$strRequest2 = urlencode($strRequest);
echo $strRequest2;
$result = fopen("http://sms.bmcc.com.cn/webservice/smsg.asmx?op=Send&".$strRequest2, "r");
if($retcode == 0)
{ echo "<font color=ff0000>成功加入到发送队列</font>";
}
这个返回是对的.但是功能还是不能实现
这个$retcode根本是空的。
你没有在任何地方给$retcode赋予值。
这个我再看看吧,怎么没别人来看看啊。
$callFunc = "Send";
$EntCode=62015046;
$UserName='快乐文化';
$RanStr=rand();//'取得加密字符窜(可在本地生成)
$HashStr=strtoupper(MD5($RanStr & strtoupper(MD5('100096'))));//'生成HashStr
$Content='test';
$MobileNumber=13556870911;
$SendTime='';
$SrcNumber=62015046;
$DataType=14;
$params = array(
"EntCode"=>$EntCode,
"UserName"=>$UserName,
"RanStr"=>$RanStr,
"HashStr"=>$HashStr,
"Content"=>$Content,
"MobileNumber"=>$MobileNumber,
"SendTime"=>$SendTime,
"SrcNumber"=>$SrcNumber,
"DataType"=>$DataType
);$r = $client->__soapCall($callFunc, $params);
print_R($r);
一个object refer
stdClass Object
(
[SendResult] => Object reference not set to an instance of an object.
)证明我之前的代码的确是没有问题,这个结果是我升级了php到5.05调用系统的soap函数库得到的,和我用pear类库得到的结果完全一致,搞了一下午,一晚上,重看了龙争虎斗,我终于可以确定代码没有问题了,阿门。如果您有兴趣知道关于怎么升级服务器,不妨访问我的blog
http://gudai.cnblogs.com
http://sms.bmcc.com.cn/webservice/smsg.asmx?WSDL下的几个方法.但是在php4下还是有点问题.有空加我的msn.我把它传与你,可以吗?
去以下地址下载:http://pear.php.net/SOAP-0[1].9.1 改名为 SOAP
HTTP_Request-1[1].2.4 改名为 HTTP
Net_URL-1[1].0.14 改名为 Net