2010-06-19 3 views
0

У меня есть простой веб-сервис ASP.NET, и я хочу позвонить ему из php-клиента. Я использую nusoap soap client.Вызов веб-службы ASP .NET от php-клиента

Ниже приведен код на стороне клиента PHP:

<?php 
require_once('lib/nusoap.php');  
$wsdl="http://localhost:64226/Service1.asmx?wsdl"; 
$client=new soapclient($wsdl, 'wsdl'); 
$param=array('number1'=>'2', 'number2'=>'3'); 
echo $client->call('add',$param); 
?> 

Веб методы я создал в веб-службы являются:

namespace WebService3 
{ 
/// <summary> 
/// Summary description for Service1 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ToolboxItem(false)] 
public class Service1 : System.Web.Services.WebService 
{ 

    [WebMethod] 
    public string HelloWorld() 
    { 
     return "Hello World"; 
    } 

    [WebMethod] 
    public string add(int x, int y) 
    { 
     int z = x + y; 
     return z.ToString(); 
    } 
} 
} 

Однако, когда я запускаю приведенный выше код PHP это делает не возвращать добавленное значение переданных параметров. Вместо этого он просматривает слово «Массивы»

Я не знаком с программированием php. Я делаю что-то неправильно с вышеуказанными кодами? Необходимо быстрое решение для решения этой проблемы и вызов веб-службы с php.

Заранее благодарен!

ответ

0

Замены эта линия

echo $client->call('add',$param); 

этим один

echo $client->__soapCall('add', $param); 

Смотрите также this question.

+0

, когда я заменяю с $ клиента -> __ soapCall («добавить», $ параметров) дает следующее сообщение об ошибке: Вызов неопределенной метод SoapClient :: __ soapCall() – chathuradd

+0

@chathuradd О, я думал, что вы использовали SoapClient в комплекте с PHP. В этом случае обратитесь к документации вашей библиотеки мыла. – Artefacto

+0

Теперь я использую SoapClient в комплекте с php, и мне удалось заставить его работать :), но с использованием другого кода: класс Добавление { public $ x = 12; public $ y = 20; } $ client = new SoapClient ('http: // localhost: 64226/Service1.asmx? Wsdl'); $ result = $ client-> add (новое дополнение()); echo $ result-> addResult; Но функция __soapCall, о которой вы упоминали, не работает, вероятно, из-за некоторой ошибки при передаче параметров, которую я точно не мог понять. – chathuradd

0

Теперь, если вы запустите echo $ result ["addResult"];

он должен печатать выход красиво.