تبليغاتX
تجربه‌های یک برنامه نویس

تجربه‌های یک برنامه نویس

چگونه از یک وب سرویس نوشته شده در asp.net در برنامه php استفاده کنیم؟

بیشتر از 3 سال هست که در حال نوشتن وب سرویس در asp.net و ارایه خدمات به دیگر برنامه ها هستم اما تا به امروز به برنامه مشتریی برنخورده بودم که با زبان PHP نوشته شده باشه. طبق تصوری که از وب سرویس داشتم، تصور میکردم استفاده از وب سرویس در php بایستی به راحتی استفاده از آن در .Net باشد اما وقتی امروز یکی از همکاران من نتوانست به راحتی با وب سرویس در PHP کار کند متوجه شدم این موضوع به آن راحتی که تصور میشد، نیست.

به همین دلیل در گوگل در این باره جستجو کردم اما متاسفانه نتوانستم موردی را پیدا کنم که مشکل ما را برطرف کند اما در میان جستجوها، به مورد جالبی برخوردم از سایت http://www.gbogea.com که در سال 2008 به مشکل تقریبا مشابهی برخورده بود.

نکته این مطلب در این بود که استاندارد SOAP مورد استفاده در وب سرویس دارای دو حالت( style) است:

* RPC

* Document 

که در ASP.NET مقدار Documen، پیشفرض است و در PHP مقدار RPC. به همین دلیل در فراخوانی وب سرویس در PHP اشکال رخ میدهد. برای رفع این مشکل دو راه حل وجود دارد:

1) تغییر در کد وب سرویس که این راه حل مناسب نیست زیرا برنامه‌های نوشته شده با زبان ASP.Net را دچار مشکل می کند.


[WebService(Namespace = "http://tempuri.org/")]
public class Service : System.Web.Services.WebService
{

    [SoapRpcMethod()]
    [WebMethod]
    public string MyTestMethod(string myParameter)
    {
        return "The value of the parameter is: " + myParameter;
    }

}


2) تغییر در کل PHP به صورت زیر:

 'gabriel');

    $s = new SoapClient($wsdl,true);

    //here is the only change you need to do
    $result = $s->call('MyTestMethod',array('parameters' =>  $theVariable));

    echo "

Resultado:

"; echo "
"; print_r($result); print "
"; ?>

+ نوشته شده در  یکشنبه هجدهم دی 1390ساعت 19:25  توسط   | 

درباره من

من یک برنامه نویس .net هستم که بیش از ۵ سال است در حال برنامه نویسی بطور حرفه ای هستم. این وبلاگ رو جهت تبادل اطلاعات و انتقال تجربیاتم به دیگران ایجاد کرده ام. امیدوار بتونم هر ازچند گاهی در اینجا مطلبی بنویسم.

+ نوشته شده در  چهارشنبه چهاردهم دی 1390ساعت 16:9  توسط   |