天天看點

PHP 調用C# WebService

在VS2010中建立WebService:Finance.asmx

代碼如下:

using System.Web.Services;

namespace WebTest.WebService

{

    /// <summary>

    /// Finance 的摘要說明

    /// </summary>

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [System.ComponentModel.ToolboxItem(false)]

    // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。

    // [System.Web.Script.Services.ScriptService]

    public class Finance : System.Web.Services.WebService

    {

        [WebMethod]

        public int add(int a,int b)

        {

            return a + b;

        }

    }

}

建立PHP檔案:test.php

代碼如下:

<?php

$client = new SoapClient('http://localhost/WebService/Finance.asmx?wsdl');

if ($client !== false)

{

    //解決中文亂碼問題

    $client->soap_defencoding = 'utf-8';

    $client->decode_utf8 = false;

    $client->xml_encoding = 'utf-8';

    // 使用關聯數組,鍵名對應C#方法的參數名

    $params = array('a' => 1, 'b' => 2);

    // 可以使用 $client->__soapCall() 或 $client->WebService方法名() 兩種方式調用

    // 使用 $client->__soapCall() 調用時應将 $param 再包裹一層

    try

    {

        $result = $client->__soapCall("add", array("parameters" => $params));

        print_r($result->addResult);

        echo "<br/>";

        // 使用 $client->WebService方法名() 調用時無需另行包裹 $param

        $params = array('a' => 3121, 'b' => 2);

        $result = $client->add($params);

        print_r($result->addResult);

    }

    catch(Exception $ex)

    {

        echo $ex->getMessage();

    }

}

?>