Получение значений из ответа SOAP в PHP - PullRequest
0 голосов
/ 16 октября 2018

Я получаю ответ, как показано ниже, от общедоступного WSDL http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL

Как я могу получить sISOCodein в переменную php?

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <m:CountryCurrencyResponse xmlns:m="http://www.oorsprong.org/websamples.countryinfo">
            <m:CountryCurrencyResult>
                <m:sISOCode>INR</m:sISOCode>
                <m:sName>Rupees</m:sName>
            </m:CountryCurrencyResult>
        </m:CountryCurrencyResponse>
    </soap:Body>
</soap:Envelope>

Я написал кодкак показано ниже

$wsdl   = "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL";
$client = new SoapClient($wsdl, array('trace'=>1));  // The trace param will show you errors stack

// web service input params
$request_param = array("sCountryISOCode" => "IN");
$responce_param = null;
try
{
    $responce_param = $client->CountryCurrency($request_param);
    $xml = simplexml_load_string($responce_param);
    foreach ($xml->xpath('//CountryCurrencyResult') as $item)
    {
        print_r($item);
    }
}
catch (Exception $e) 
{ 
    echo "<h2>Exception Error!</h2>"; 
    echo $e->getMessage(); 
}

Как получить синтаксический анализ ответа и получить значения переменных?

1 Ответ

0 голосов
/ 16 октября 2018

Результатом является stdClass объект.Просто попробуйте это.

$wsdl = "http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL";
$client = new SoapClient($wsdl, array('trace' => 1));  // The trace param will show you errors stack

// web service input params
$request_param = array('sCountryISOCode' => 'IN');
$responce_param = null;
try {
    $responce_param = $client->CountryCurrency($request_param);

    print_r($responce_param->CountryCurrencyResult->sISOCode);
} catch (Exception $e) {
    echo "<h2>Exception Error!</h2>";
    echo $e->getMessage();
}
...