Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

[REZOLVAT] Apelul unei metode dintr-un serviciu web .NET
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
iftvio



Data înscrierii: 14/Dec/2005
Mesaje: 47

Trimis: Mar Iun 24, 2008 2:25 pm    Titlul subiectului: [REZOLVAT] Apelul unei metode dintr-un serviciu web .NET  

Salutare,

Se da un serviciu web facut in .NET. Se cere apelarea metodelor serviciului web din PHP PEAR.

Cod:
<?php
require_once 'SOAP/Client.php';

class ServiciuWebSoap extends SOAP_Client
{
    function ServiciuWebSoap($path = 'http://www.testwebservice.local/serviciuweb/ServiciuWeb.asmx')
    {
         $this->SOAP_Client($path, false, false,array('allow_self_signed' => true,'verify_peer' => false));
   }
   
   function &HelloWorld()
    {
        $result = $this->call('HelloWorld',
                              $v = null,
                              array('namespace' => 'http://www.testwebservice.local/serviciuweb/',
                                    'soapaction' => 'http://www.testwebservice.local/serviciuweb/HelloWorld',
                                    'style' => 'document',
                                    'use' => 'literal'));
        return $result;
    }
   
   function Sum(){
      $Sum = new SOAP_Value('{http://www.testwebservice.local/serviciuweb}Sum', false, $v = array('a' => '10', 'b' => '2'));
      $result = $this->call('Sum',
                              $v = array('Sum' => $Sum),
                              array('namespace' => 'http://www.testwebservice.local/serviciuweb',
                                    'soapaction' => 'http://www.testwebservice.local/serviciuweb/Sum',
                                    'style' => 'document',
                                    'use' => 'literal'));
        return $result;
   }
   
   function Spune(){
      //SayIT
      $SaySomething = new SOAP_Value('{http://www.testwebservice.local/serviciuweb}SayIT', false, $v = array("Name"=>'Diesel'));
      $result = $this->call('SayIT',
                              $v = array('SayIT' => $SaySomething),
                              array('namespace' => 'http://www.testwebservice.local/serviciuweb',
                                    'soapaction' => 'http://www.testwebservice.local/serviciuweb/SayIT',
                                    'style' => 'document',
                                    'use' => 'literal'));
      return $result;
   }
}

$client = new ServiciuWebSoap();

$reply = $client->HelloWorld();
print_r($reply);

echo '<br />-------------------------------<br />';

$reply = $client->Sum();
print_r($reply);

echo '<br />-------------------------------<br />';

$reply = $client->Spune();
print_r($reply);

?>

Partea proasta e ca nu imi transmite valorile la parametrii! "HelloWorld" il apelezea si imi da raspunsul asteptat, dar "Sum" si "Spune" ar trebui sa intorca anumite valori in functie de ce se transmite prin parametrii.

Partea buna este ca pot apela metodele serviciului web folosind libraria SoapClient (din PHP).

Cod:
<?php

$client = new SoapClient('http://testwebservice.local/serviciuweb/ServiciuWeb.asmx?WSDL',array ("classmap" => array ("Persoana" => "Pers")));

$answer = $client->__getFunctions();
print_r($answer);
echo '<br />------------------------------------------------<br />';
$answer = $client->__soapCall('HelloWorld',array());
print_r($answer);
echo '<br />------------------------------------------------<br />';
$answer = $client->SayIT(array('Name'=>'Diesel'));
print_r($answer);
echo '<br />------------------------------------------------<br />';
$answer = $client->Sum(array('a'=>'0','b'=>'2'));
print_r($answer);
echo '<br />------------------------------------------------<br />';

?>

Totusi am nevoie sa folosesc PHP PEAR in apelarea serviciului web. Va rog frumos sa postati absolut orice sugestii care m-ar ajuta sa rezolv problema.
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1816
Locație: Sibiu

Trimis: Mar Iun 24, 2008 3:19 pm    Titlul subiectului:  

1.
iftvio a scris: Partea buna este ca pot apela metodele serviciului web folosind libraria SoapClient (din PHP). Libraria (eng. bookstore) este locul unde te duci si cumperi carti. Bibiloteca (eng. library) este, extrapolat, locul unde gasesti cunostiintele altora. Deci pe viitor, foloseste termenul 'biblioteca' cand te referi la un dll.

2. n-am prea lucrat cu servicii web, insa din ce vad, avand in vedere ca apelurile statice merg, probabil ca parametrii trimisi nu sunt receptionati cum trebuie de serviciu. Verifica ce iti trimite clientul spre serviciu, eu zic ca acolo e problema.
Sus  
iftvio



Data înscrierii: 14/Dec/2005
Mesaje: 47

Trimis: Mar Iun 24, 2008 4:21 pm    Titlul subiectului:  

mihaitha a scris: n-am prea lucrat cu servicii web, insa din ce vad, avand in vedere ca apelurile statice merg, probabil ca parametrii trimisi nu sunt receptionati cum trebuie de serviciu. Verifica ce iti trimite clientul spre serviciu, eu zic ca acolo e problema.

Poti sa fii putin mai explicit? Cum as putea sa verific daca parametrii sunt corect receptionati de serviciu?

Eu nu sunt dezvoltator PHP, m-am jucat cu PHP acum cativa ani, acum incerc sa doar sa ajut pe cineva.
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1816
Locație: Sibiu

Trimis: Mar Iun 24, 2008 10:21 pm    Titlul subiectului:  

Pai n-ai cum sa faci debugging la serviciu? Din ce vad, il rulezi pe un server local de test...
Sus  
iftvio



Data înscrierii: 14/Dec/2005
Mesaje: 47

Trimis: Mie Iun 25, 2008 8:22 am    Titlul subiectului:  

Problema a fost rezolvata (se foloseau librarii PEAR mai vechi in care erau facute modificari ce afectau modul in care erau transmise valorile asociate parametrilor).
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1816
Locație: Sibiu

Trimis: Mie Iun 25, 2008 8:33 am    Titlul subiectului:  

FOR CHRIST'S SAKE! Tu ai citit ce am scris in primul post? BIBLIOTECI NU LIBRARII!!! CA NU CUMPERI CARTI DE LA UN DLL!!!

Gata, m-am calmat.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community