0

I am trying to connect to a Soap Webservice using PHP's SoapClient and I am getting an error below

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/IInDirect/AddProduct'.

Below is my PHP code to connect to the server.

$requestParams = array(
    'Password' => 'XXXXXX',
    'Username' => 'XXXXXXX',
    'AddressLine1' => '52 TEST DRIVE',
    'City' => 'JOHANNESBURG',
    'DateOfBirth' => '1960-02-10T00:00:00',
    'Forename1' => 'Eva',
    'Gender' => 'Unknown',
    'Province' => 'GAUTENG',
    'SouthAfricanID' => '45454545454',
    'ProductCode' => '12345'
);

try {

    $options = array(
    'soap_version' => SOAP_1_2,
    'cache_wsdl'=>WSDL_CACHE_NONE,
    'connection_timeout' => 15,
    'trace' => true,
    'encoding' => 'UTF-8',
    'exceptions' => true,
    );

$client = new \SoapClient('https://soap.url.com/test.svc?wsdl', $options);

$actionHeader = new \SoapHeader('http://www.w3.org/2005/08/addressing',
            'Action',
            'http://tempuri.org/IInDirect/AddProduct');
        $client->__setSoapHeaders($actionHeader);

} catch (Exception $e) {
    echo "<h2>Exception Error!</h2>";
    echo $e->getMessage();
}
$response = $client->AddProduct($requestParams);

print_r($response);

Below is the xml

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tusa="http://schemas.datacontract.org/2004/07/Tusa.Services.ConsumerConnect" xmlns:tem="http://tempuri.org/">
<soap:Header>
    <AuthenticationCredentials>
    <tusa:Password>Password</tusa:Password>
    <tusa:Username>Username</tusa:Username>
    </AuthenticationCredentials>
</soap:Header>
<soap:Body>
    <tem:AddProduct>
    <tem:CustomerDetail>
    <tusa:AddressLine1>AddressLine1</tusa:AddressLine1>           
    <tusa:City>City</tusa:City>
    <tusa:DateOfBirth>DateOfBirth</tusa:DateOfBirth>            
    <tusa:Forename1>Forename1</tusa:Forename1>        
    <tusa:Gender>Gender</tusa:Gender>
    <tusa:MaritalStatus>MaritalStatus</tusa:MaritalStatus>           
    <tusa:Province>Province</tusa:Province>
    <tusa:SouthAfricanID>SouthAfricanID</tusa:SouthAfricanID>           
    <tusa:Suburb>Suburb</tusa:Suburb>
    <tusa:Surname>Surname</tusa:Surname>     
    </tem:CustomerDetail>
    <tem:ProductCode>ProductCode</tem:ProductCode>
    </tem:AddProduct>
</soap:Body>
</soap:Envelope>

How would i get this to work?

1 Answer 1

1

This error message may be caused by missing Action SOAP header.

$actionHeader = new SoapHeader('http://www.w3.org/2005/08/addressing',
                               'Action',
                               'http://tempuri.org/IInDirect/AddProduct');
$client->__setSoapHeaders($actionHeader);
Sign up to request clarification or add additional context in comments.

2 Comments

can you please explain where you got the 3 parameters from?
its good to note that if and action header is missing soap may return error

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.