程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php soap調用asp.net webservice

php soap調用asp.net webservice

編輯:PHP基礎知識
 

首先做一下准備工作,找到安裝環境裡的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>";
?>

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved