Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SoapClient i generisanje XML problem

[es] :: PHP :: SoapClient i generisanje XML problem

[ Pregleda: 2270 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maddog_srb
Cacak

Član broj: 192945
Poruke: 129
*.dynamic.isp.telekom.rs.



+24 Profil

icon SoapClient i generisanje XML problem09.07.2013. u 19:44 - pre 130 meseci
Treba da generisem ovakav zahtev:

Code:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:min="http://sitename.com/Name1">
<soapenv:Header/>
    <soapenv:Body>
        <min:GetServicesByServiceTypeId>123</min:GetServicesByServiceTypeId>
       </soapenv:Body>
</soapenv:Envelope>



Medjutim koristeci SoapClient ovako:
Code:

    ini_set('soap.wsdl_cache_enabled', 0);
    ini_set('soap.wsdl_cache_ttl', 0);
        
    error_reporting(0);
        
    
    $url        = "https://some.subdomain.sitename.com/Name1.wsdl";
    //kada stavim putanju do sertifikata pukne i ode u catch do reda $client->__getLastRequest() ali posle toga nema nista! Nikakva poruka! Ako stavim nepostojeci sertifikat onda vraca XML iz greske :S
    
    $local_cert    = dirname(dirname(__FILE__)) . "\\third_party\\certificate.p12"; 
    $password    = '********';
        
        $data = array(
            "trace" => 1, 
            "exception" => 0,
            "local_cert" => $local_cert,
            "passphrase" => $password 
        );
        
    
        try{            
            $client = new SoapClient($url, $data);
        
            echo '<pre>';
            print_r($client->__getFunctions());
        
            print_r($client->GetServicesByServiceType(array('GetServicesByServiceTypeId' => 123)));
        }catch(SoapFault $e){        
            echo 'Request : <br/><xmp>', 
            $client->__getLastRequest(), 
            '</xmp><br/><br/> Error Message : <br/>', 
            $e->getMessage(); 
        }


Ovo je greska koja mi se javlja u catch bloku:
Code:

Request : <br/><xmp><?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://sitename.com/Name1"><SOAP-ENV:Body><ns1:GetServicesByServiceTypeId>1</ns1:GetServicesByServiceTypeId></SOAP-ENV:Body></SOAP-ENV:Envelope>
</xmp><br/><br/> Error Message : <br/>Could not connect to host




Zanima me da nije greska mozda sto ja SoapClient kreiram sa adresom: "https://some.subdomain.sitename.com/Name1.wsdl"
a u samom wsdl-u je adresa: "http://sitename.com/Name1"?

Ako neko moze da pomogne bio bih zahvalan. Takodje da li je problem sto ovi tagovi dobijeni sa __getLastRequest() uopste nisu isti kao potreban zahtev, ili je to nesto interno. Nemam iskustva sa ovim Soap-om i wsdl-om :( Da li je greska do mog pristupa, ili je na serveru... HVALA NA BILO KAKVIM INFORMACIJAMA.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.telecentro-reversos.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: SoapClient i generisanje XML problem10.07.2013. u 21:33 - pre 130 meseci
SoapClient podrzava certificate samo u pem formatu i certifikat mora da bude ucitan u varijablu a ne postavljanjem putanje.

Code:

new soapclient("somewsdl", array('local_cert'=>file_get_contents('<somepath>/key.pem'),'passphrase'=>'password')); 



Tko leti vrijedi
 
Odgovor na temu

maddog_srb
Cacak

Član broj: 192945
Poruke: 129
*.dynamic.isp.telekom.rs.



+24 Profil

icon Re: SoapClient i generisanje XML problem11.07.2013. u 18:11 - pre 130 meseci
Hvala na odgovoru, vec sam mislio da mi ni na ovu temu niko nece odgovoriti posto mi od kraja 2011-te niko nije odgovorio ni na jednu :) Mada postavio sam samo 6-7 tema ne vise. Salu na stranu u medjuvremenu sam shvatio da mora .pem format, tako da sada uspevam da se konektujem. Medjutim morao sam da navedem i "location" kao parametar SoapClient-a, bez njega nije htelo.

Sto se tice file_get_contents, vec sam bio probao na taj nacin, medjutim kada radim tako dobijam gresku "SOAP-ENV:ClientNot Authenticated", a kada samo navedem putanju do .pem fajla, onda dobijam gresku "Invalid AccountId", koja mi ima vise smisla, jer sam isprobavao sa random podacima. Da li je moguce da je to razlicita opcija zbog toga sto ja ovo isprobavam iz lokala na Win7 pomocu XAMPP-a... Zanima me da bih znao pri publish-u da obratim paznju na ovaj deo... Ali svakako cu probati i jedno i drugo.

Hvala na odgovoru, javicu da li sam na kraju uspeo da generisem potreban zahtev.
 
Odgovor na temu

maddog_srb
Cacak

Član broj: 192945
Poruke: 129
*.dynamic.isp.telekom.rs.



+24 Profil

icon Re: SoapClient i generisanje XML problem16.08.2013. u 18:20 - pre 129 meseci
Evo posle mesec dana sam dobio odgovor iz supporta, i rekli su da su resili problem (znaci bilo je nesto do njih) ali i dalje ne radi :)

Code:

REQUEST:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://WEBSITE.com/Minimal"><SOAP-ENV:Body><ns1:GetServicesByServiceTypeId>61</ns1:GetServicesByServiceTypeId></SOAP-ENV:Body></SOAP-ENV:Envelope>

REQUEST HEADERS:
POST /Minimal/ HTTP/1.1
Host: uat1.external.WEBSITE.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.0
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://WEBSITE.com/Minimal/GetServicesByServiceType"
Content-Length: 279


RESPONSE HEADERS:
HTTP/1.1 500 Internal Service Error
Date: Fri, 16 Aug 2013 16:34:38 GMT
Server: Apache/2.2.15 (Red Hat)
X-Powered-By: PHP/5.3.3
Content-Length: 284
Connection: close
Content-Type: text/xml; charset=utf-8

Response:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>Not Authenticated</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>


To je moj zahtev i njihov odgovor, jedino sto mi pada na pamet je da ns1 u mom zahtevu se ne poklapa sa Host header-om... da li to ima veze? Evo jos jednom kako kreiram SoapClient:

Code:

        // Create the SoapClient instance 
        $url        = "https://uat1.external.WEBSITE.com/Minimal.wsdl";
        $local_cert    = file_get_contents(dirname(dirname(__FILE__)) . "cert.pem");
        $password    = '************';
        
        $data = array(
            "trace" => 1, 
            "exception" => 0,
            "local_cert" => $local_cert,
            "passphrase" => $password,
            "location" => "https://uat1.external.WEBSITE.com/Minimal/",
            'cache_wsdl' => WSDL_CACHE_NONE,
            'soap_version'=> SOAP_1_1    
        );
        
    
        try{
                
            $client = new SoapClient($url, $data);

            ...
 
Odgovor na temu

[es] :: PHP :: SoapClient i generisanje XML problem

[ Pregleda: 2270 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.