Можно ли добавить атрибут в корень XML с помощью функции call () nusoap? - PullRequest
1 голос
/ 02 декабря 2010

Я создаю класс, который будет использовать веб-службы FedEx.Я пытаюсь связаться через функцию nosoapclient () класса nusoap php, передавая ему файл wsdl.Похоже, что FedEx требует атрибута пространства имен в корне документа запроса.

Я могу использовать функцию call () nusoap и передать ей строку XML в качестве параметра PARAMETER, который будет работать правильно.Я бы предпочел передать массив в качестве аргумента PARAMETER, и именно здесь я столкнулся с проблемой.

Можно ли передать массив через функцию call () nusoap, а также включить атрибут пространства имен вroot?

FEDEX RateRequest PHP exerpt
Ниже дано представление о том, что я пытаюсь сделать, а не фактический код

$client = new nusoapclient('RateRequest_v9.wsdl',true);
//Thought this would work but to no avail.
//$request_array is a multi-associative array with keys as required XML tag names and values as the tags inner value, did not include as it is irrelevant to this problem
//$root_attr = array('xmlns'=>'http://fedex.com/ws/rate/v9');
//$parameters = array('RateRequest'=>new soapval('RateRequest',false,$request_array,false,false,$root_attr));

$parameters = array('RateRequest'=>$request_array);

//Have tried with and without the third argument - which is the for the namespace
$response = $client->call('getRates',$parameters,'http://fedex.com/ws/rate/v9');

выдержка XML FEDEX RateRequest
Ниже приведен неполный XML (посмотрите на тег RateRequest в конце, чтобы увидеть разницу)

НЕПРАВИЛЬНЫЙ ФОРМАТ

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns="http://fedex.com/ws/rate/v9"><SOAP-ENV:Body><RateRequest>...</RateRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>

ПРАВИЛЬНЫЙ ФОРМАТ

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns="http://fedex.com/ws/rate/v9"><SOAP-ENV:Body><RateRequest xmlns="http://fedex.com/ws/rate/v9">...</RateRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>

Приношу свои извинения, если я пропустил этот разговор в другом месте, но яОбыскивал сеть и пробовал все, что мог придумать, чтобы заставить его работать, если это невозможно, какие-либо предложения?Заранее благодарю за помощь.

...