2015-01-15 5 views
-2

Я работаю над интеграцией чтения WebService, написанного на .NET с PHP. Я нашел решение, описанные здесь, но это не работает для меня:Поддержка PHP SOAP WebService

PHP Parse SOAP XML response from SOAP Client

Я буду очень признателен за вашу поддержку.

EDIT: Этот код уже ИСПРАВЛЕНИЯ благодаря https://stackoverflow.com/users/1987598/mathias-m%C3%BCller Матиас Мюллер

код я работал ниже я в ваше распоряжение:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
$wsdl = 'http://www.wsplaces.com/Xofigo/wsAppXofigo.asmx?WSDL'; 
$trace = true; 
$exceptions = false; 

$data = array(
    'IdEdo' => '9' 
); 

$client = new SoapClient($wsdl, array('trace' => $trace, 'exceptions' => $exceptions)); 
$response = $client->__soapCall("Get_PlacesByEdo", array($data)); 

echo"<pre>"; 
print_r($client); 
echo"</pre>"; 
echo"<pre>"; 
print_r($client->__last_response); 
echo"</pre>"; 

$lastResponse='<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><Get_PlacesByEdoResponse xmlns="http://www.tempuri.org/"><Get_PlacesByEdoResult><IdEdo/></Get_PlacesByEdoResult></Get_PlacesByEdoResponse></soap:Body></soap:Envelope>'; 

$xml = new SimpleXMLElement($lastResponse); 
$xml->registerXPathNamespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance'); 
$xml->registerXPathNamespace('xsd', 'http://www.w3.org/2001/XMLSchema'); 
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/'); 
$xml->registerXPathNamespace('xml', 'http://www.w3.org/XML/1998/namespace'); 
$xml->registerXPathNamespace('a', 'http://www.tempuri.org/'); 

$xpath ='/soap:Envelope/soap:Body/a:Get_PlacesByEdoResponse/a:Get_PlacesByEdoResult/a:IdEdo/text()'; 

$result = $xml->xpath($xpath); 

if ($result != FALSE && count($result) > 0) { 
     echo '{"reference": "' . $result[0] . '", "success":"true"}'; 
} else { 
     echo '{"error": "si", "success":"false"}'; 
} 


?> 
+0

Что не так с тем, что вы написали. Какую ошибку вы получаете? Какое неожиданное поведение произошло из-за вышеуказанного кода> –

ответ

0

кажется, что входной XML не содержат элемент a:Get_PlacesByEdo, поскольку входной XML (в более читаемом формате) выглядит как

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <Get_PlacesByEdoResponse xmlns="http://www.tempuri.org/"> 
     <Get_PlacesByEdoResult> 
      <IdEdo/> 
     </Get_PlacesByEdoResult> 
     </Get_PlacesByEdoResponse> 
    </soap:Body> 
</soap:Envelope> 

Возможно, вы пытались найти элемент IdEdo?

$xpath = '/soap:Envelope/soap:Body/a:Get_PlacesByEdoResponse/a:Get_PlacesByEdoResult/a:IdEdo/text()';--> 
-1

привет я дебютом с мылом WebService и у меня есть problème, ISEE это сообщение под массив "Примечание: Undefined переменной: HTTP_RAW_POST_DATA в C: \ WAMP \ WWW \ soapwebservice2 \ productlist.php в строке 18", когда я введите адрес «http://localhost/soapwebservice2/productlist.php»

+0

Pls Поделитесь своим кодом для обзора :) –