2012-03-14 25 views
10

Estoy usando un método que usa la clase SoapClient en una página php para llamar a un servicio web en un sitio asp.net.Llamar al servicio web asp.net desde PHP con múltiples parámetros

Aquí está el código php.

$client = new SoapClient("http://testurl/Test.asmx?WSDL"); 

$params = array('Param1' => 'Hello', 
       'Param2' => 'World!'); 

$result = $client->TestMethod($params)->TestMethodResult; 

echo $result; 

El problema es, yo sólo estoy poniendo el primer parámetro (Param1) "Hola" hacia atrás y parece que hay un problema con Param2. Aquí está el método asp.net.

[WebMethod] 
public string TestMethod(string Param1, string Param2) 
{ 
    return Param1 + " " + Param2; 
} 

¿Qué me falta para llegar Hello World! en la respuesta?

Respuesta

19

Trate de esta manera:

$client = new SoapClient("http://testurl/Test.asmx?WSDL"); 
$params->Param1 = 'Hello'; 
$params->Param2 = 'World!';  
$result = $client->TestMethod($params)->TestMethodResult; 
+0

... funcionó! ¡Gracias! – Felasfaw

+0

Una pregunta rápida. La razón por la que mi código no funcionó es porque fue aprobada como un solo parámetro de tipo array? – Felasfaw

+0

@Felasfaw, yeap. –

1
***********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; 
     } 

    } 
+0

$ result2 = $ client-> ShowNameFamely ($ params) -> ShowNameFamelyResult; –

1

que estaba buscando en Google para realizar llamadas de múltiples parámetros. Todo el hilo no dice lo siguiente. Cuando php llamada asmx servicio web, el paso de parámetros deben coincidir con los variables utilizadas en el servicio web de:

public string XYZ(string p, string q) 

La llamada de servicio web tiene que ser algo como:

$params = array("p" => $name1, "q" => $name2); 

p, q pares deben ser nombrados y aclarados en php llamada.

Cuestiones relacionadas