php soap client request - php

How to send PHP SOAP Request to .NET Web Services, I have already tried soapclient(); class but something wrong..... any body please help me.
POST /KH/TestKH/WebServices.asmx HTTP/1.1
Host: www.host.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/SearchMethod"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SearchMethod xmlns="http://tempuri.org/">
<_hap>string</_hap>
<_hapType>string</_hapType>
<UserID>string</UserID>
<Password>string</Password>
<Origin>string</Origin>
<Destination>string</Destination>
<FromDate>string</FromDate>
<ToDate>string</ToDate>
<Class>string</Class>
<Airlines>string</Airlines>
<Adults>int</Adults>
<Childs>int</Childs>
<Infants>int</Infants>
<isReturn>boolean</isReturn>
<CompanyCode>string</CompanyCode>
<sessionId>string</sessionId>
</SearchMethod>
</soap:Body>
</soap:Envelope>
OUR CODE:
$options["soap_version"]=SOAP_1_1;
$options["trace"]=true;
$options["exceptions"]=0;
$options["UserID"]="xxxxx";
$options["Password"]="xxxxx";
$client = new SoapClient("http://www.HOST.com/KH/TestKH/WebServices.asmx?WSDL",$options);
//var_dump($client->__getTypes());
$parameters= new stdClass();
$parameters->_hap="xxxxxxxxx";
$parameters->_hapType="TEST";
//$parameters->UserID="";
//$parameters->Password="";
$parameters->Origin="AUS";
$parameters->Destination="LHR";
$parameters->FromDate="01/01/2016";
$parameters->ToDate="27/02/2016";
$parameters->Class="X";
$parameters->Airlines="";
$parameters->Adults="1";
$parameters->Childs="0";
$parameters->Infants="0";
$parameters->isReturn=true;
$parameters->CompanyCode="xxxxx";
$parameters->sessionId="xxxxxx";
$result=$client->SearchMethod($parameters);
var_dump($result);
var_dump($client->__getLastRequest());
$status=$result->SearchMethodResult;
var_dump($status);
}
catch (Exception $e){
$e -> getMessage();
var_dump($e);
}
Our request process but don't know what is the wrong with these code because show server side error "Unknown error occured!"

Related

PHP function SOAP 1.2

I need some help to execute a SOAP request with PHP.
For example, a method for search a publisher:
POST /webservice/search.asmx HTTP/1.1
Host: www.host.com
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:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://host.com/HostNET/" xmlns:types="http://host.com/HostNET/encodedTypes" xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body soap12:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<tns:findPublishers>
<sessionToken xsi:type="xsd:string">string</sessionToken>
<expression soapenc:id="id0" xsi:type="tns:SearchExpression">
<expression xsi:type="xsd:string">string</expression>
<phonetic xsi:type="xsd:boolean">boolean</phonetic>
<inflections xsi:type="xsd:boolean">boolean</inflections>
</expression>
<distributeurs xsi:type="xsd:boolean">boolean</distributeurs>
</tns:findPublishers>
</soap12:Body>
</soap12:Envelope>
I have the sessionToken but I don't understand what I have to do with the line <expression soapenc:id="id0" xsi:type="tns:SearchExpression"> and it's contents.
try{
$search = new SoapClient("http://www.host.com/WebService/search.asmx?wsdl", array("soap_version" => SOAP_1_2));
$search->findPublishers($sessionToken,???????,FALSE);
}catch (SoapFault $e){
print_r($e);
}

SOAP response by given request and response structure in PHP

As I am pretty new to SOAP I really need some help to get started. I have been given this structur:
request:
POST /NumbriParing/NumbriParing.asmx HTTP/1.1
Host: nba.tja.ee
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://nba.sa.ee/NumriomanikuParing"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<NumriomanikuParing xmlns="http://nba.sa.ee/">
<number>long</number>
</NumriomanikuParing>
</soap:Body>
</soap:Envelope>
Response:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<NumriomanikuParingResponse xmlns="http://nba.sa.ee/">
<NumriomanikuParingResult>
<Number>long</Number>
<OmanikuRegNumber>string</OmanikuRegNumber>
<Omanik>string</Omanik>
<VastusKood>NumberLeitud or NumbritEiLeitud</VastusKood>
</NumriomanikuParingResult>
</NumriomanikuParingResponse>
</soap:Body>
</soap:Envelope>
I need to replace the "long" placeholder in the request with a numeric variable to get the request for that number.
The asmx is located in https://nba.tja.ee/NumbriParing/NumbriParing.asmx
How Can it be done using php?
Best regards,
Martti
Use SoapClient and WSDL of the service you need.
Something like:
try {
$client = new SoapClient('https://nba.tja.ee/NumbriParing/NumbriParing.asmx?WSDL');
$param = new stdClass();
$param->number = 123;
$result = $client->NumriomanikuParing($param);
var_dump($result);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}

how to call web services using soap in php

The following is a sample SOAP 1.1 request and response.:
POST /atservices/1.5/atws.asmx HTTP/1.1
Host: webservices2.autotask.net
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://autotask.net/ATWS/v1_5/getZoneInfo"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getZoneInfo xmlns="http://autotask.net/ATWS/v1_5/">
<UserName>string</UserName>
</getZoneInfo>
</soap:Body>
</soap:Envelope>
we want to call web services of autotask using soap in php.can we get example for it
how we should call soap client.
Its output should be like this :
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getZoneInfoResponse xmlns="http://autotask.net/ATWS/v1_5/">
<getZoneInfoResult>
<URL>string</URL>
<ErrorCode>int</ErrorCode>
<DataBaseType>string</DataBaseType>
<CI>int</CI>
</getZoneInfoResult>
</getZoneInfoResponse>
</soap:Body>
</soap:Envelope>
Use the PHP native SoapClient along with the service WSDL, like so:
$atservices_wsdl = "https://www.autotask.net/atservices/1.5/atws.wsdl";
$atservices_client = new SoapClient($atservices_wsdl);
$zone_info = $atservices_client->getZoneInfo("SomeUserName");
print_r($zone_info); // review the returned object converted from SOAP response.
echo $zone_info->DataBaseType; // this might work if it's not behind a Response object.
At the very least, you should be aiming for something like this. More can be found here.
$soap = new SoapClient('link/to/.wsdl');
$result = $soap->__soapCall('getZoneInfo', array('UserName' => $username));
var_dump($result);

how to send SOAP request in curl

I am a Beginner of soap, How do i send soap request? i searched in google and tried different methods but sadly it didn't worked for me.
i really appreciated your help.
here's the sample request that i should send:
POST /Universal/WebService.asmx HTTP/1.1
Host: www.sample.com
Content-Type: text/xml;charset="utf-8"
Content-Length: length
SOAPAction: https://www.sample.com/Universal/WebService.asmx/Request
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:xsi="http://wwww.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Request xmlns="https://www.sample.com/Universal/WebService.asmx">
<ID>CPHK01</ID>
<UID>TEST</UID>
<PWD>TEST</PWD>
<target_mpn>09183530925</target_mpn>
<amount>115</amount>
<ref_no>20060830143030112</ref_no>
<source_mpn>67720014</source_mpn>
</Request>
</soap:Body>
</soap:Envelope>
here's the response:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version = "1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://wwww.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<RequestResponse xmlns="https://www.sample.com/Universal/WebService.asmx">
<RequestResult>
<Ref_no>20060830143030112</Ref_no>
<StatusCode>101</StatusCode>
</RequestResult>
</RequestResponse>
</soap:Body>
</soap:Envelope>
PHP has a native SoapClient class. The constructor takes the WSDL as an argument. This is preferred to cURL because the SoapClient handles all of the SOAP intricacies and it allows you to deal with native objects and arrays and removes the need to manually build the SOAP envelope and XML.
try {
$client = new SoapClient('https://www.sample.com/Universal/WebService.asmx?wsdl');
$response = $client->Request(array(
'ID' => 'xxxx',
'UID' => 'xxxx',
'PWD' => 'xxxx',
'target_mpn' => 'xxxx',
'amount' => 'xxxx',
'ref_no' => 'xxxx',
'source_mpn' => 'xxxx'
));
print_r($response); // view the full response to see what is returned
// or get the response properties:
echo $response->RequestResult->Ref_no;
echo $response->RequestResult->StatusCode;
} catch (Exception $e) {
echo $e->getMessage();
}

Connect to sample SOAP 1.1 with PHP

Hello i need to connect to SOAP web services with password, username and SourceId in php.
the SOAP request is:
POST /webservices/AgentOnlineReservation.asmx HTTP/1.1
Host: 54.228.189.53
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/GetHotelsData"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetHotelsData xmlns="http://tempuri.org/">
<SourceId>string</SourceId>
<UserName>string</UserName>
<Password>string</Password>
</GetHotelsData>
</soap:Body>
</soap:Envelope>
Please help me.
Use the native SoapClient library:
$client = new SoapClient('linkhere.com/AgentOnlineReservation.asmx?wsdl');
$response = $client->GetHotelsData(array(
'SourceId' => '...',
'UserName' => '...',
'Password' => '...'
));
print_r($response);
The link passed in the SoapClient call is the WSDL (Web Service Description Language) file.

Categories