← PHP

Nusoap e formato do XML

Lida 2892 vezes

Offline

pluis3103 
Membro
Mensagens 19 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Seventh year Anniversary

Tenho um problema em formar um XML com o formato exacto do que o webservice que pretendo utilizar requer. Estou a utilizar a classe nusoap para o fazer.
Erro que me dá:


Código (Text):
Array
(
    [Reservation_Data] => Array
        (
            [Reservation_Value] => 0
            [Status] => ERROR_Create_Internacional_Reservation: Object reference not set to an instance of an object. - 0
        )

)
O meu request é:

Código (Text):
POST /Rentway_Internacional_Reservations_WS/Create_Reservation.asmx HTTP/1.0
Host: www.xxxxxxx.pt
User-Agent: NuSOAP/0.9.5 (1.123)
Content-Type: text/xml; charset=UTF-8
SOAPAction: http://www.xxxxxxx.pt/Rentway_Internacional_Reservations_WS/Create_Internacional_Reservation/Create_Internacional_Reservation
Content-Length: 714

<?xml version="1.0" encoding="UTF-8"?>
    <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:ns3785="http://tempuri.org">
     <SOAP-ENV:Body><Create_Internacional_Reservation xmlns="http://www.xxxxxxxxx.pt/Rentway_Internacional_Reservations_WS/Create_Internacional_Reservation">
                       <Reservation_Request>
                                        <MessageType>N</MessageType>
                                         <Group>01</Group>
                                          ...........................
                       </Reservation_Request>
</Create_Internacional_Reservation>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


O meu código é:

Código :
require_once('nu-soap/nusoap.php');
require_once('config.php');
$client = new nusoap_client('http://www.xxxxxxxxxx.pt/Rentway_Internacional_Reservations_WS/Create_Reservation.asmx?wsdl', true);
$param = array('Username'=>'xxx','Password'=>'xxx','MessageType'=>'N','Group'=>'01');
$result = $client->call('Create_Internacional_Reservation', array('Reservation_Request' => $param));

Ao consultar o request que vem no manual e que deve ser seguida, a diferença que encontro é:
Onde está:

Código (XML):
                       <Reservation_Request>
                                        <MessageType>N</MessageType>
                                         <Group>01</Group>
                                          ...........................
                       </Reservation_Request>
Deveria estar:
Código (XML):
                       <Reservation_Request xmlns="http://www.xxxxxx.pt/Rentway_Internacional_Reservations_WS/Reservation_Request.xsd" >
                                        <MessageType>N</MessageType>
                                         <Group>01</Group>
                                          ...........................
                       </Reservation_Request>

Como é que envio o (xmlns="http://www.xxxxxx.pt/Rentway_Internacional_Reservations_WS/Reservation_Request.xsd" ) dentro do Reservation_Request ?