1

There is a WSDL service which you can query using the C# as shown below:

        arameter p1 = new Parameter();
        p1.Name = "$name";
        p1.Value = "thename";

        Parameter p2 = new Parameter();
        p2.Name = "$surname";
        p2.Value = "thesurname";

        Parameter p3 = new Parameter();
        p3.Name = "$birthyear";
        p3.Value = "1990";

        Parameter p4 = new Parameter();
        p4.Name = "$queryno";
        p4.Value = "999999";

        Query query = new Query();
        query.Name = "TheQueryName";
        query.Parameters = new Parameter[] { p1, p2, p3, p4 };

        ServiceReference1.BASEXSoapClient cli = new BASEXSoapClient();
        cli.Open();
        string s = cli.Execute(query);
        cli.Close();

I am trying to create a php counterpart of this code but I am having problems with the query name which does not exist:

<?php
 try
{
$client = new  SoapClient( "http://xxxx/BASEX.asmx?WSDL" );

  $request = array('$name'=>'thename',
                     '$surname'=>'thesurname',
                     '$birthyear'=>'1990',
                     '$queryno'=>'999999');

  $response = $client->TheQueryName($request);    

print_r($response);
}
catch (SoapFault $e)
{
    echo "<pre>";
   print_r($e); exit;
echo "<pre>";

}

?>

And this is the web service:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <Execute xmlns="xxxxx/basex">
      <query>
        <Name>string</Name>
        <Parameters>
          <Parameter>
            <Name>string</Name>
            <Value>string</Value>
          </Parameter>
          <Parameter>
            <Name>string</Name>
            <Value>string</Value>
          </Parameter>
        </Parameters>
      </query>
    </Execute>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ExecuteResponse xmlns="xxxxx/basex">
      <ExecuteResult>string</ExecuteResult>
    </ExecuteResponse>
  </soap12:Body>
</soap12:Envelope>

I am told that I can use SOAP instead of BASEX client, as the basex was not working at all.

1 Answer 1

1

Looks like you need the structure below for the parameters. Also your method is Execute and it takes the actual name in the query['Name'] parameter:

$request = array(
    'query' => array(
        'Name' => 'TheQueryName',
        'Parameters' => array(
            array('Name' => '$name', 'Value' => 'thename'),
            array('Name' => '$surname', 'Value' => 'thesurname'),
            array('Name' => '$queryno', 'Value' => '999999')
        )
    )
);

$response = $client->Execute($request);  
Sign up to request clarification or add additional context in comments.

Comments

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.