[ theilusion @ 15.01.2018. 10:22 ] @
Pozdrav svima.

Da li neko radi u ovoj kombinaciji kao sto pise u naslovu?
Imam na raspolaganju jedan WCF servis koji ima implementirane neke metode ali klijent mora biti razvijen u PHP.
Znam da ima u PHP razvijen SOAP klijent i jednostavno se napravi ali problem je sljedeci:
Vecina ovih metoda koje su razvijene u WCF servisu .NET-a vracaju liste koje bi trebalo da prikazem u PHP klijentu i potrebna je neka klasa koja bi konvertovala listu u c# u array u PHP.
Ljudi sta predlazete?

Hvala unapred.
[ djordjeno @ 16.01.2018. 09:36 ] @
Nisam PHP strucnjak ali bi mogao da parsiras response od WCF/SOAP servisa kao stadardni XML u PHP...
[ theilusion @ 16.01.2018. 10:16 ] @
Moguce.
Inace ja mogu iz PHP da vidim sve metodek, tj. da ih izprintam ali ne razumem kako odstampati nesto tipa lista<T> u PHP-U.
[ Predrag Supurovic @ 16.01.2018. 13:30 ] @
Od SOAP-a odgovoriš dobiješ kao XML, vidi strukturu XML-a pa parsiraj šta ti treba.
[ theilusion @ 16.01.2018. 21:24 ] @
Hvala vam sto ste se ukljucili.

Od SOAP-a dobijem tzv. WSDL jezik. Slicno XML-u. Napominjem da je ovaj servis napisan u C# i pri tome koristen WCF (Windows Communication Foundation) model servisa.

Ne znam da li me razumete i da li uopste ima veze sto metode koje tamo cupaju neke podatke iz baze vracaju C# Liste<T>.

Npr. imam metodu GetAllPatient (int id) i kada je izvrsim u bilo kom C# klijentu ja dobijem listu sa

mnogo propertija.

Npr. GetAllPatient (26) dobijem listu koja ima ove propertije:

FirstName,LastName,Adress,Country,DateInvoice,Payment itd itd.

Glavno pitanje je kako da prihvatim tu listu u PHP klijentu?

Nadam se da nisam zbunio ovim.
Hvala jos jednom.
[ theilusion @ 16.01.2018. 22:27 ] @
Code:

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

$soap_client = new nusoap_client("http://mojservis.com:8080/Service.svc?wsdl",true);

$p_parameters = array('id'=>26);

$result = $soap_client->call('GetAllPatient',array($p_parameters ));

print_r($result);

?>


Evo nekog primera sa nusoap klasom.

Moj niz $result posle stampanja nema nikakav sadrzaj.

[ Shadowed @ 16.01.2018. 22:56 ] @
A sta zapravo dobijes kada pozoves takav metod?

Kog tipa ti je $result? Sta dobijes sa get_class($result);
Mozes li da uradis nesto ovako?
Code (php):

echo get_class($result);
foreach ($result as $item) {
    echo "$item\n";
}
 
[ theilusion @ 17.01.2018. 06:31 ] @
Metod get_class u tom slucaju vraca upozorenje:

Code:
Warning: get_class() expects parameter 1 to be object,boolean ...


Ako kazem ovo:
Code:
print_r($result);


nema nista kao rezultat

Ako kazem ovo:
Code:

var_dump($result);


Onda dobijem rezultat
Code:
bool(false)


Napominjem da je promenljiva $soap_client u stvari asocijativni niz koji se napunio iz wsdl-a.
Ako je odstampam vidim niz sa svim metodama koje servis ima.

Problem je sto ovo ovako ne moze da stoji:
Code:
$result = $soap_client->call('GetAllPatient',array($p_parameters ));


Metoda GetAllPatient(); vraca listu objekata a napisana je u C#.

Hvala jos jednom na savetima.


[ Shadowed @ 17.01.2018. 08:40 ] @
Hm, vidim sada da je kod tebe drugacije od primera koji sam ja nasao. Pogledaj http://www.rizalalmashoor.com/...alling-a-wcf-service-from-php/
Tu se metod poziva direktno na SoapClient-u a ne prosledjuje ime metoda kao string parametar.
[ theilusion @ 17.01.2018. 09:02 ] @
Da jeste ali nista se ne desava.

Code:

$sampleData->SampleProperty = "id";

$parameters->id = 26;
$parameters->sampleData = $sampleData;

$result = $soapClient->GetAllPatient($parameters);



Da li si mislio na ovo? To je za moj primer.
[ Shadowed @ 17.01.2018. 09:21 ] @
Na to sam mislio. Medjutim, ako je sve sto trebas da prosledis id, ne treba ti $sampleData. Probaj sledece dve varijante:
Code (php):

$parameters->id = 26;

$result = $soapClient->GetAllPatient($parameters);
 


i

Code (php):

$result = $soapClient->GetAllPatient(26);
 


Ne radim sa PHP-om pa ne mogu sam da isprobam pa ti zato ovako dajem opcije na slepo da isprobas :)
[ theilusion @ 17.01.2018. 10:23 ] @
Razumemo se, probao sam to isto jer nemam nista za proslediti nego id.

Evo rezultata print_r($result):

Code:
stdClass Object ( [GetAllPatientResult] => stdClass Object ( ) )


Citao sam da ovaj SOAP client ne radi bas kako valja.

Zato sam koristio nusoap klasu prvobitno. Ne znam da li si premetio da sam je ukljucio gore na vrhu :)

Pogledaj client.php za nusoap klasu:

https://www.developer.com/lang...ces-with-php-using-nusoap.html



[ Shadowed @ 17.01.2018. 11:08 ] @
OK, sad kad si dobio neki konkretan rezultat, probaj ako je moguce da stavis breakpoint i vidis sta on ima od metoda, property-a i sl. Ili, ako nije moguce, probaj preko refleksije.