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

SOAP problem kod korišćenja web servisa NBS

[es] :: PHP :: SOAP problem kod korišćenja web servisa NBS

[ Pregleda: 3411 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon SOAP problem kod korišćenja web servisa NBS19.03.2009. u 11:43 - pre 183 meseci
Ovaj kod sam našao na ES-u:
Code:

<?php
require_once('nusoap.php');

$wsdl = "http://webservices.nbs.yu/Comm...ExchangeRatesService.asmx?WSDL";
//http://webservices.nbs.yu/Comm...ExchangeRatesService.asmx?WSDL
$namespace = "http://www.nbs.rs/TempExchangeRatesService";
$client = new soap_client($wsdl, true);//    $client = new soap_client($wsdl, true);

$header = 
'<AuthenticationHeader xmlns="http://www.nbs.rs/TempExchangeRatesService">
      <UserName>TempTest</UserName>
      <Password>TempTestPassword</Password>
      <LicenceID>0</LicenceID>
 </AuthenticationHeader>';

$client->setHeaders($header);

$parameters_array = array('parameters' => array(
                                            'nExchangeRatesListTypeID'=>1 // kurs za devize
                                            //'nExchangeRatesListTypeID'=>2 // kurs za efektivu
                                            //'nExchangeRatesListTypeID'=>3 //srednji kurs
                                            )
                        );
$xml_result_array =  $client->call('GetCurrentExchangeRatesXML', $parameters_array);
$xml_result = $xml_result_array['GetCurrentExchangeRatesXMLResult'];
echo 'XML_result: '.$xml_result;
?>


Prijavljuje grešku: Fatal error: Class 'soap_client' not found in D:\tor_temp\XAMPP\htdocs\hellohello\ws\webservice.php on line 7
'nusoap.php' sam našao negde na netu i skinuo.
Kada sam googlao ovu grešku našao sam smao na objašnjenja tipa 'nemaš omogućen SOAP' i kako treba da u php.ini razkomentarišem extension=php_soap.dll.
Kada sam pogledao u mom php.ini fajlu to je već tako stajalo (razkomentarisano). 'nusaop.php' sam stavio u isti direktorijum gde se nalazi i ovaj moj 'webservice.php'. Proverio sam i 'php_soap.dll' fizički postoji u php direktorijumu. E dobroooo .. i šta ja sad da radim? Da li koristim ovu skriptu na pravi način?
Šta još treba da uradim da bi mogao da koristim 'new soap_client(...)'? Ovu sam skriptu našao ovde 'http://www.elitesecurity.org/t173844-1-Kursna-lista-NBS'
Unapred hvala na svakoj pomoći.

 
Odgovor na temu

Milutin Cvijetic
Milutin Cvijetic
Beograd

Član broj: 129814
Poruke: 18
*.akton-yu.net.

Sajt: www.mcc.co.rs/blog


Profil

icon Re: SOAP problem kod korišćenja web servisa NBS19.03.2009. u 13:39 - pre 183 meseci
Ja koristim script koji je dao Cybernoid II u temi koju si naveo i sve radi OK.
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: SOAP problem kod korišćenja web servisa NBS19.03.2009. u 14:51 - pre 183 meseci
Ja sam nov u php-u pa ne znam. Kako koristiš taj script? Ja sam napisao ovako sve u 1:
Code:

<?php

class AuthenticationHeader{
    function __construct() {
        $this->UserName='TempTest';
        $this->Password='TempTestPassword';
        $this->LicenceID=0;
    }
    public $UserName;
    public $Password;
    public $LicenceID;
}

class NBSSoapClient extends SoapClient {

    function __construct($wsdl,array $options){
        parent::__construct($wsdl,$options);    
        $auth=new AuthenticationHeader;
        $authvalues = new SoapVar($auth, SOAP_ENC_OBJECT);
        $header =  new SoapHeader('http://www.nbs.rs/TempExchangeRatesService','AuthenticationHeader', $authvalues, false);
        $this->__setSoapHeaders(array($header));
    }

    function __doRequest($request, $location, $action, $version) {
        $request=mb_ereg_replace('ns1:','',$request);
        $request=mb_ereg_replace(':ns1','',$request);
        $request=mb_ereg_replace('SOAP-ENV','soap',$request);
        $request=mb_ereg_replace('Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"','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"',$request);
    return parent::__doRequest($request, $location, $action, $version);
    }
}

class GetCurrentExchangeRatesXML{
    function __construct($ID=3) {
        $this->nExchangeRatesListTypeID=$ID;
    }
    public $nExchangeRatesListTypeID;
}
################
$NBSclient = new NBSSoapClient("http://webservices.nbs.yu/Comm...ExchangeRatesService.asmx?WSDL",array(
            'soap_version' => SOAP_1_1,
            'style' => SOAP_DOCUMENT,
            'encoding' => 'utf-8',
            'use' => SOAP_LITERAL
        ));

$parameters= new GetCurrentExchangeRatesXML(3);
$response=$NBSclient->GetCurrentExchangeRatesXML($parameters);

echo 'response:<br/><br/><br/>'.$response;
?>


..i naravno da je izbacio grešku: 'Object of class stdClass could not be converted to string' za ovaj eho (u toj liniji). Kako da rezultat stavim u string da bih mogao da čupam podatke za EUR CHF USD ?
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1123
*.b92.net.

Sajt: www.gvozden.info


+68 Profil

icon Re: SOAP problem kod korišćenja web servisa NBS20.03.2009. u 09:27 - pre 183 meseci
probaj sa var_dump

dobio si objekat kao rezultat i tako ga i obradjuj dalje...
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: SOAP problem kod korišćenja web servisa NBS23.03.2009. u 11:07 - pre 183 meseci
Hvala na savetu uputio si me na pravu stranu. evenčuli sam uzeo vrednosti koje mi trebaju uz pomoć 'serialize()'. Međutim sad imam drugi problem:
Imam dva fajla 'pdoc.php' i 'ws.php'. U 'pdoc.php' uzimam srednji kurs (EUR USD CHF) pomoću 'file_get_contents()', a u fajlu 'ws.php' uzimam srednji kurs pomoću web servisa NBS. Evo koda:
[pdoc.php]
Code:

<?php
ini_set('user_agent', 'Mozilla Firefox');
$date = date("d.m.Y"); 
$url = 'http://www.nbs.rs/internet/latinica/scripts/kl.html?datum=';
$url.= $date.'&broj=br.&godina=2009&vrsta=3&eksport=html&:langkl:';  
$address = file_get_contents($url);
if (!$address)
{echo '<p align=\'center\'>Failed</p>';}
else{
// Evropska unija - EUR
$valuta = 'EUR';
$value = strpos($address, $valuta);
$EUR = '';
for ($i = $value + 87; $i <= $value + 93; $i++) {
    $EUR .= $address{$i};
}
// Švajcarska - CHF
$valuta = 'CHF';
$value = strpos($address, $valuta);
$CHF = '';
for ($i = $value + 87; $i <= $value + 93; $i++) {
    $CHF .= $address{$i};
}
// SAD - USD
$valuta = 'USD';
$value = strpos($address, $valuta);
$USD = '';
for ($i = $value + 87; $i <= $value + 93; $i++) {
    $USD .= $address{$i};
}}
echo 'EUR['.$EUR.'] USD['.$USD.'] CHF['.$CHF.']';
?>


[ws.php]
Code:

<?php
class AuthenticationHeader{
    function __construct() {
        $this->UserName='TempTest';
        $this->Password='TempTestPassword';
        $this->LicenceID=0;
    }
    public $UserName;
    public $Password;
    public $LicenceID;
}
class NBSSoapClient extends SoapClient {
    function __construct($wsdl,array $options){
        parent::__construct($wsdl,$options);    
        $auth=new AuthenticationHeader;
        $authvalues = new SoapVar($auth, SOAP_ENC_OBJECT);
        $header =  new SoapHeader('http://www.nbs.rs/TempExchangeRatesService','AuthenticationHeader', $authvalues, false);
        $this->__setSoapHeaders(array($header));
    }
    function __doRequest($request, $location, $action, $version) {
        $request=mb_ereg_replace('ns1:','',$request);
        $request=mb_ereg_replace(':ns1','',$request);
        $request=mb_ereg_replace('SOAP-ENV','soap',$request);
        $request=mb_ereg_replace('Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"','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"',$request);
    return parent::__doRequest($request, $location, $action, $version);
    }
}
class GetCurrentExchangeRatesXML{
    function __construct($ID=3) {
        $this->nExchangeRatesListTypeID=$ID;
    }
    public $nExchangeRatesListTypeID;
}
$NBSclient = new NBSSoapClient("http://webservices.nbs.yu/Comm...ExchangeRatesService.asmx?WSDL",array(
            'soap_version' => SOAP_1_1,
            'style' => SOAP_DOCUMENT,
            'encoding' => 'utf-8',
            'use' => SOAP_LITERAL
        ));
$params_tri= new GetCurrentExchangeRatesXML(3); //ovo je za srednji kurs
$response=$NBSclient->GetCurrentExchangeRatesXML($params_tri);
$tmpStr=serialize($response);
$EUR=explode(" ",substr($tmpStr,strpos($tmpStr,"European union"),110));
$USD=explode(" ",substr($tmpStr,strpos($tmpStr,"United States"),110));
$CHF=explode(" ",substr($tmpStr,strpos($tmpStr,"Switzerland"),107));
echo 'EUR['.$EUR[count($EUR)-1].'] USD['.$USD[count($USD)-1].'] CHF['.$CHF[count($CHF)-1].']';


Izvršavanje i jednog i drugog fajla nalokalu ('http://localhost/hellohello/ws/ws.php' i 'http://localhost/hellohello/ws/pdoc.php') ispisuje u browser isto :
Code:

EUR[94,5096] USD[69,1669] CHF[61,5818]

Doduše 'pdoc.php' ispisuje tačke umesto zareza (to je sigurno bitno!)

A kada ih uploadujem na net [neki sajt na loopiji] ni jedan ni drugi nemogu da uzmu srednji kurs.

U browseru 'http://www.nekisajt.co.rs/temp/pdoc.php' --> daje rezultat:
Code:

Failed

EUR[] USD[] CHF[]

Izgleda da 'file_get_contents()' nije dozvoljeno na tom njihovom serveru jer ova fuja nije vratila vrednost.

U browseru 'http://www.nekisajt.co.rs/temp/ws.php' --> daje rezultat:
Code:

The page cannot be displayed


I šta sad ja da radim na lokalu rade oba načina, a kad uploadujem na net neradi nijedan ? Zašto je to tako ne znam ? Ako neko zna neka pomogne, unapred hvala. ..dugačak post šta da se radi..





 
Odgovor na temu

[es] :: PHP :: SOAP problem kod korišćenja web servisa NBS

[ Pregleda: 3411 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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