首先做一下准備工作,找到安裝環境裡的php.ini把;extension=php_soap.dll去掉前面的;。我這裡使用的是wamp,php-php擴展裡把php_soap啟用就可以了。
一、用vs2008新建一個webservice:using System;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
[WebService(Namespace = "http://xxx.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
public Service () {
//如果使用設計的組件,請取消注釋以下行
//InitializeComponent();
}
#region 返回一個字符串測試數據
[WebMethod(Description = "測試方法")]
public string trainNumber(string name)
{
return DateTime.Now.ToString()+"——"+name;
}
#endregion
#region 返回一個整形
[WebMethod(Description="測試方法")]
public int trainInt(int ID)
{
return ID;
}
#endregion
}
二、使用iis發布webservice,並記下webservice地址http://localhost/SerPhp/Service.asmx。
(發webservice和發布一般網站是一樣的。)
三、新建一個php文件
3.1、定義一下變量,並賦值webservice的地址
$ws=http://localhost/SerPhp/Service.asmx?wsdl",這裡的wsdl是一種通信模式
3.2、創建一個SoapClient對象 $client=new SoapClient($ws);
3.3、查看WebService的方法和方法裡的參數需要的類型(這裡可以使用var_dump輸出,查看webservice的方法)
查看方法$client->__getFunctions()
查看方法參數的類型$client->__getTypes()
3.4、給所需要的參數賦值(需要說明的是:如果有多個參數時可以使用不$parameters,$parameters是我本人使用的,可以使用不參數名)
$parameters=array("name"=>"張三")
3.5、調用方法,並取得返回值:$username=$client->trainNumber($parameters)
3.6、打印返回的結果:這裡提供三種方法var_dump($username)、print_r($username)、foreach($username as $key=>$var){echo var}
<?php
$ws="http://localhost/SerPhp/Service.asmx?wsdl";
$client=new SoapClient($ws);
echo "SOAP服務器提供的開放函數:";
echo '<pre>';
var_dump($client->__getFunctions());
echo '</pre>';
echo "SOAP服務器提供的Type:";
echo '<pre>';
var_dump($client->__getTypes());
echo '</pre>';
echo "執行trainNumber的結果";
try{
$parameters1=array('name'=>"張黎明");
$parameters2=array("ID"=>123);//123帶雙引號不帶都一樣的啊
$password=$client->trainInt($parameters2);
$username=$client->trainNumber($parameters1);
}catch(SoapFault $fault){
echo "Fault! code:".$fault->faultcode."string:".$fault->faultstring;
}
//echo(htmlspecialchars($client->__getLastRequest()));
echo "<pre>";
var_dump($password);
foreach($password as $key=>$val1){
echo $val1;
}
echo "</br>";
var_dump($username);
print_r($username);
foreach($username as $key=>$val){
echo $val;
}
echo "</pre>";
?>