15

I'm using a method using SoapClient class in a php page to call a web service in an asp.net site.

Here is the php code.

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

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

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

echo $result;

The problem is, I'm only getting the first parameter (Param1) "Hello" back and seems like there is an issue with Param2. Here is the asp.net method.

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

What am I missing to get Hello World! in the response?

3 Answers 3

26

Try like this:

$client = new SoapClient("http://testurl/Test.asmx?WSDL");
$params->Param1 = 'Hello';
$params->Param2 = 'World!';    
$result = $client->TestMethod($params)->TestMethodResult;
Sign up to request clarification or add additional context in comments.

3 Comments

One quick question. The reason my code did't work is b/c it was being passed as one single param of type array?
can you tell me where come TestMethodResult ?
what is the $params object? how do i set it?
1

I was googling for multi-parameter calling. All the thread did not tell the following. When php call .asmx web service, the passing of parameters MUST MATCH the variables used in the web service of :

public string XYZ(string p, string q) 

The web service call has to be something like :

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

p, q pairs must be named and clarified in php calling.

Comments

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

    }

1 Comment

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.