There is a similar theme in foreign brothers.
Selected answer about BOM labeling.
Checked the file of norms.
And if the ID being sent is stupid to subtract / add 1, then all is good.
Here is the ID: 54253511
On it by chance does not break?

I already tried using try catch => __getLastResponse .
But even here I did not want to be transformed into XML :

Warning: simplexml_load_string (): Entity: line 1: parser error: xmlParseCharRef: invalid xmlChar value 26 in

Win failed.

Then I tried to use these classes:

<?php class XSoapClient extends SoapClient { const XSI_NS = "http://www.w3.org/2001/XMLSchema-instance"; const _NULL_ = "xxx_replacedduetobrokephpsoapclient_xxx"; protected $mustParseNulls = false; public function __doRequest($request, $location, $action, $version, $one_way = null) { if($this->mustParseNulls) { $this->mustParseNulls = false; $request = preg_replace('/<ns1:(\w+)>'.self::_NULL_.'<\/ns1:\\1>/','<ns1:$1 xsi:nil="true"/>', $request, -1, $count); if ($count > 0) { $request = preg_replace('/(<SOAP-ENV:Envelope )/', '\\1 xmlns:xsi="'.self::XSI_NS.'" ', $request); } } return parent::__doRequest($request, $location, $action, $version, $one_way); } public function __call($method, $params) { foreach($params as $k => $v) { if($v === null) { $this->mustParseNulls = true; $params[$k] = self::_NULL_; } } return parent::__call($method, $params); } } class MySoapClient extends SoapClient { public function __doRequest($request, $location, $action, $version, $one_way = 0) { $response = parent::__doRequest($request, $location, $action, $version, $one_way); // parse $response, extract the multipart messages and so on //this part removes stuff $start=strpos($response,'<?xml'); $end=strrpos($response,'>'); $response_string=substr($response,$start,$end-$start+1); return($response_string); } } class SoapClientNG extends \SoapClient{ public function __doRequest($req, $location, $action, $version = SOAP_1_1){ $xml = explode("\r\n", parent::__doRequest($req, $location, $action, $version)); $response = preg_replace( '/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/', "", $xml[0] ); return $response; } } 

Also without results.

I hope someone came across this.

How to overcome this disease?

    1 answer 1

    Briefly about the weather:

     $params = array('ID' => $brandID, 'FormatCurrency' => 'РУБ', 'SearchCross' => $cross); try { $details = $client->GetPriceId( $params ); } catch(SoapFault $e) { $response = $client->__getLastResponse(); $response = str_replace("&#x1A","",$response); $response = str_ireplace(['SOAP-ENV:', 'SOAP:'], '', $response); $response = simplexml_load_string($response); $details = $response->Body->GetPriceIdResponse->GetPriceIdResult; } if( !$details ) throw new Exception("DETAILS_NOT_FOUND"); 

    If someone from the guys knows your service, please correct


    Likbez

    We have a server in combat that has PHP 5.3 installed.
    And I always check it first, as the oldest one.
    As a result, I had to run on another server, where 5.4
    And the script cursed already more informative, pointing to the symbol & # x1A