Я использую метод с использованием класса SoapClient на php-странице для вызова веб-службы на сайте asp.net.
Вот PHP-код.
$client = new SoapClient("http://testurl/Test.asmx?WSDL"); $params = array( 'Param1' => 'Hello', 'Param2' => 'World!'); $result = $client->TestMethod($params)->TestMethodResult; echo $result;
Проблема в том, что я получаю только первый параметр (Param1) «Hello» и кажется, что проблема с Param2. Вот метод asp.net.
[WebMethod] public string TestMethod(string Param1, string Param2) { return Param1 + " " + Param2; }
Что мне не хватает, чтобы получить Hello World!
в ответе?
Попробуйте вот так:
$client = new SoapClient("http://testurl/Test.asmx?WSDL"); $params->Param1 = 'Hello'; $params->Param2 = 'World!'; $result = $client->TestMethod($params)->TestMethodResult;
***********index.php****************** <?php require_once("lib/nusoap.php"); $client = new SoapClient("http://localhost:1966/ListAndishmandan/WebServiseFinal.asmx?WSDL"); $params = array( 'Param1' => 'Moslem', 'Param2' => 'Ganji!'); $result = $client->TestMethod($params)->TestMethodResult; print_r( $result); $params = array( 'Param1' => 'Moslem', 'Param2' => 'Ganji!'); echo "\n \r"; $result2 = $client->ShowNameFamely($params)->ShowNameFamelyResult; print_r( $result2); ?> *******************WebServiseFinal.asmx?WSDL************************** using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; /// <summary> /// Summary description for WebServiseFinal /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // 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 WebServiseFinal : System.Web.Services.WebService { public WebServiseFinal () { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public string TestMethod(string Param1, string Param2) { return Param1 + " " + Param2; } [WebMethod] public string ShowNameFamely(string Param1, string Param2) { return Param1 + " " + Param2; } }
Я искал поисковые запросы для многопараметрических вызовов. Вся нить не сказала следующее. Когда php вызывает веб-службу .asmx, передача параметров MUST MATCH использует переменные, используемые в веб-службе:
public string XYZ(string p, string q)
Вызов веб-службы должен быть примерно таким:
$params = array( "p" => $name1, "q" => $name2 );
p, q пар должны быть названы и уточнены при вызове php.