 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|