Webservices (soap,rest,...) - Noob con Soap

   
Vista:
Imágen de perfil de pwron

Noob con Soap

Publicado por pwron (1 intervención) el 08/04/2016 18:40:58
Buenas gente no he trabajado nunca con este tipo de Webservices (SOAP) y no consigo una respuesta correcta.

Os pongo en situación , estoy trabajando en PHP y haciendo peticiones en CURL , la request y la response son estas :

Captura

El ticket se saca de otra request que si que me responde y me devuelve el ticket , hasta ahi todo correcto .

La duda la tengo aquí en la Request "<xsd:schema>schema</xsd:schema>xml</DatosSolicitud>" , el proveedor me da unos xsd que son esquemas que debe cumplir el xml (o eso imagino) para cada request .

Y aquí es donde la matan , yo lo que entiendo es que donde pone "schema" tendría que poner el xsd que me da el provedor de esta request y en donde pone "xml" , el xml que coincide con ese xsd ¿Estoy en lo cierto o estoy completamente equivocado?

Os dejo el codigo muchisimas gracias!.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
        $client = new SoapClient("https://privadacz.adexia.es/ServiciosWeb.asmx?WSDL");
        $result = $client->SolicitarTicket(array('Usuario' => 'xxxx' , 'Contraseña' => 'xxxx'));
        $ticket = $result->SolicitarTicketResult;
 
        $soapUrl = "https://privadacz.adexia.es/ServiciosWeb.asmx?WSDL";
 
        $xml_post_string = '<?xml version="1.0" encoding="utf-8"?>
                            <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                              <soap:Body>
                                <ObtenerArchivoTarifaCz xmlns="http://privadacz.adexia.es/">
                                  <Ticket>'.$ticket.'</Ticket>
                                    <DatosSolicitud>
                                    <xsd:schema>schema</xsd:schema>xml</DatosSolicitud>
                                </ObtenerArchivoTarifaCz>
                              </soap:Body>
                            </soap:Envelope>';

           $headers = array(
                        "POST /ServiciosWeb.asmx HTTP/1.1",
                        "Host: privadacz.adexia.es",
                        "Content-Type: text/xml; charset=utf-8",
                        "Content-length: ".strlen($xml_post_string),
                        "SOAPAction: http://privadacz.adexia.es/ObtenerArchivoTarifaCz"
                    ); 

            $url = $soapUrl;

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

            $response = curl_exec($ch);

            var_dump($response);

            curl_close($ch);


    ?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder