как вызвать мой веб-сервис asp.net с php?

У меня есть один веб-сервис, созданный в asp.net и опубликованный в iis 5.1. Теперь я хочу вызвать этот веб-сервис из среды php. На самом деле моя веб-служба получает одну строку в качестве параметра и возвращает одну и ту же строку. Но все время возвращаемая строка пуста или null. Я не смог отправить строковое значение из php в веб-службу asp.net

Это мой веб-сервис, созданный в asp.net

namespace PRS_WS { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class prs_point : System.Web.Services.WebService { [WebMethod] public string testAssignment(string inputData) { return inputData; } } } 

И это мой php-код для вызова вышеуказанного веб-сервиса asp.net …

 <?php require_once('nusoap/lib/nusoap.php'); $wsdl="http://localhost/prs_point/prs_point.asmx?WSDL"; $str1=""; $str1="Hello from php"; $client = new soapclient($wsdl,'wsdl'); $result=$client->call('testAssignment',$str1); foreach($result as $key => $value) { echo "<br/>Response ::::: $value"; } ?> 

Я не знаю, нужны ли изменения в стороне php или asp.net? … Пожалуйста, помогите мне выйти из этой проблемы …

Этот код отлично работает для меня …

 <?php require 'nusoap/lib/nusoap.php'; $client = new nusoap_client('http://localhost/prs_point/prs_point.asmx?WSDL', 'WSDL'); $error = $client->getError(); if ($error) { die("client construction error: {$error}\n"); } $param = array('inputData' => 'sample data'); $answer = $client->call('testAssignment', array('parameters' => $param), '', '', false, true); $error = $client->getError(); if ($error) { print_r($client->response); print_r($client->getDebug()); die(); } print_r($answer); ?> 

попробуй это.

 $client = new SoapClient("http://localhost/prs_point/prs_point.asmx?WSDL"); $params->inputData= 'Hello'; $result = $client->testAssignment($params)->testAssignmentResult; echo $result; 

Вы бы лучше определили свою службу в WCF, это даст вам больше контроля над созданным SOAP, и пока я не уверен в PHP, у меня были проблемы в прошлом, когда ASMX-сервисы работали с Adobe Flex, поэтому интеграция isn «всегда кажутся безрезультатными, несмотря на то, что он по-прежнему использует протокол SOAP. Кроме того, ваш сервис выглядит отлично, но я не думаю, что вам нужны эти строки:

 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] 

с PHP-стороны, вы должны иметь возможность вызывать $result = $client -> testAssignment( $str1 ); но (я забыл) вам может потребоваться доступ к значению результата $result = $client -> testAssignment( $str1 ) -> testAssignmentResult; вам также необходимо передать параметры методам, входящим в состав массивов, вместо вызова с несколькими аргументами, см. эту статью для полного примера.

НТН