Reputation: 59
I'm planning to use Guzzle to communicate with my XML web service. I am able to communicate with my XML web service using core PHP 5.6. I want to do this within my Laravel App using Guzzle to communicate with XML web service.
My xml config code is as follows:
$requestXmlBody ='';
$requestXmlBody = '<?xml version="1.0" encoding="UTF-8"?>';
$requestXmlBody = $requestXmlBody.'<FAB_PkgAvailRQ Target="test" Version="2002A" xmlns="https://localhost.com/find">';
$requestXmlBody = $requestXmlBody.'<SyndicatorInfo SyndicatorId="******" SyndicatorPassword="*****"/>';
$requestXmlBody = $requestXmlBody.'<SessionInfo CreateNewSession="true"/>';
$requestXmlBody = $requestXmlBody.'<HolidaySearchRequest ResponseTimeoutSecs="60" ExcludeNonBookableSuppliers="true">';
$requestXmlBody = $requestXmlBody.'<SearchCriteria FlightOnly="true" OneWayOnly="'.$journey_type.'" NumberOfAdults="'.$adults.'" NumberOfChildren="'.$children.'" NumberOfInfants="'.$infants.'">';
$requestXmlBody = $requestXmlBody.'<DepartureDateRange StartDate="'.$from.'" EndDate="'.$from.'"/>';
$requestXmlBody = $requestXmlBody.'<DepartureAirports><Airport>'.$origin.'</Airport></DepartureAirports>';
$requestXmlBody = $requestXmlBody.'<DestinationChoice><DestinationAirports><Airport>'.$destination.'</Airport></DestinationAirports></DestinationChoice>';
$requestXmlBody = $requestXmlBody.'<FlightPreferences/>';
$requestXmlBody = $requestXmlBody.'<HolidayDuration MinNumberOfNights="'.$ddays.'" MaxNumberOfNights="'.$ddays.'"/>';
$requestXmlBody = $requestXmlBody.'</SearchCriteria>';
// $requestXmlBody = $requestXmlBody.'<ResultSetPreferences MaxItems="'.$numberofsearch.'" SortCode="cost" SortAscending="true"/>';
// $requestXmlBody = $requestXmlBody.'<InitialViewInfo Length="'.$numberofsearch.'" Offset="0"/>';
$requestXmlBody = $requestXmlBody.'</HolidaySearchRequest>';
$requestXmlBody = $requestXmlBody.'</FAB_PkgAvailRQ>';
//My curl code is as follows
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://localhost.com/23");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXmlBody);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);
curl_close($ch);
$result1 = simplexml_load_string($result);
dd($result1);
I want to send a POST request using Guzzle to above xml configuration to my xml web service such as paxport/multicom. Any Idea How I can proceed?
Upvotes: 2
Views: 16791
Reputation: 4244
Hi Please find the answer here
add it to composer file
"guzzlehttp/guzzle": "^6.2",
controller file
<?php
/** add it at top **/
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use Guzzle\Http\Exception\ClientErrorResponseException;
use GuzzleHttp\Exception\ServerException;
use GuzzleHttp\Exception\BadResponseException;
/*** end ***/
use App\Http\Controllers\Controller as Controller;
class ApiController extends Controller {
function __construct() {
$this->client = new \GuzzleHttp\Client();
}
public function stockBatch($id) {
$apiKey = 'xyx';
$url = 'https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=QQQ,AAPL&apikey=' . $apiKey;
$response = $this->client->get($url);
$results = $response->getBody();
$results = json_decode($results);
return response()->json($results);
}
}
Upvotes: 2
Reputation: 5010
It's simple.
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('http://localhost.com/23', ['body' => $requestXmlBody]);
$result = $response->getBody()->getContents();
$result1 = simplexml_load_string($result);
Upvotes: 4