I want send xml like this through the soup client:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:hot="http://TekTravel/HotelBookingApi">
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<hot:Credentials UserName="test" Password="test@123"/>
<wsa:Action>http://test/HotelBookingApi/CountryListRequest</wsa:Action>
<wsa:To>http://api.test.in/HotelAPI_V7/HotelService.svc</wsa:To>
</soap:Header>
<soap:Body>
<hot:CountryListRequest/>
</soap:Body>
</soap:Envelope>
But it send xml like this:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://TekTravel/HotelBookingApi">
<env:Header>
<ns1:Credentials UserName="test" Password="test@123"/>
<ns1:Action>http://test/HotelBookingApi/HotelSearch</ns1:Action>
<ns1:To>http://api.test.in/HotelAPI_V7/HotelService.svc</ns1:To>
</env:Header>
<env:Body>
<ns1:CountryListRequest/>
</env:Body>
</env:Envelope>
api need exact same xml like the first one.I use Laravel 5.2 and this is my code:
<?php
namespace App\Model\Hotel;
use Illuminate\Database\Eloquent\Model;
use SoapClient;
use SoapHeader;
use SoapVar;
class HotelTBO extends Model
{
//Credentials
var $Credentials = ['UserName' => 'test', 'Password' => 'test@123'];
//WSDL
var $wsdl = 'http://api.tbotechnology.in/HotelAPI_V7/HotelService.svc?wsdl';
//Actions
var $ActionHotelSearch = "http://TekTravel/HotelBookingApi/HotelSearch";
//NS
var $NS = "http://TekTravel/HotelBookingApi";
//TO
var $ToHotelSearch = "http://api.tbotechnology.in/HotelAPI_V7/HotelService.svc";
public function testSearch()
{
$client = new SoapClient(public_path('\assets\file\TBO.wsdl'), array('soap_version' => SOAP_1_2, 'trace' => 1, "exceptions" => 0));
$HeaderVar = new SoapVar($this->HeaderXML, XSD_ANYXML, null, null, null);
$Headers[] = new SoapHeader($this->NS, "Credentials", $this->Credentials,false);
$Headers[] = new SoapHeader($this->NS, "Action", $this->ActionHotelSearch);
$Headers[] = new SoapHeader($this->NS, "To", $this->ToHotelSearch);
$client->__setSoapHeaders($Headers);
$result = $client->__soapCall('CountryList', []);
}
There's a package called https://github.com/BeSimple/BeSimpleSoap but there are no any documentation for that. many thanks for the help
This is not possible to achieve only using PHP soap client.