PHP SOAP server
 
Javornik 14. nov 2016 08:51:37 Pridružen od:
15. jun 2010
431 objav
375 27 4
#1

Pozdravljeni,



v soap svetu nisem ravno domač, bi pa moral narediti en PHP server, kamor nam bo zunanja aplikacija pošiljala določena sporočila in dokumente. Imam wsdl file, ki so mi ga poslali iz te zunanje firme. Kakšna ideja kje začeti? Morda kdo, ki to obvlada in bi lahko pogledal?


všeč(0) ni všeč(0) spam(0)
 
pavarti 14. nov 2016 09:00:45 Pridružen od:
26. okt 2011
445 objav
587 92 14
#2

Mi uporabljamo NuSOAP (https://sourceforge.net/projects/nusoap/).


všeč(1) ni všeč(0) spam(0)
 
carli 14. nov 2016 09:13:45 Pridružen od:
5. avg 2008
1258 objav
583 54 17
#3

Kaj manjka default SOAP klientu?



$soapClient = new SoapClient($wsdl, $options);


všeč(1) ni všeč(0) spam(0)
 
Javornik 14. nov 2016 09:19:54 Pridružen od:
15. jun 2010
431 objav
375 27 4
#4

Sem delal z default soap clientom in mi je uspelo narediti do te mere, da sem sporočila normalno prejemal, vendar response ni bil pravilno oblikovan in tako njihova aplikacija ni pravilno registirala uspešnosti prenosa.


všeč(0) ni všeč(0) spam(0)
 
spicey 14. nov 2016 13:06:34 Pridružen od:
2. avg 2007
70 objav
87 3 3
#5

Če je response napačen, je zaradi tega, ker ste ga narobe formatirali in vam poreže vse kar ni specificirano v wisdlu.


$server = new SoapServer('wsdl', ['encoding'=>'UTF-8']);
$server->setObject(new TheSoapServer());
$server->handle();

In potem narediš class, ki ima metode kot jih zahteva wsdl



Naprimer takole:


// tole je fake metoda v zgoraj omenjenem classu

public function getUser()
{
return (object)[
'username' => 'janez',
'name' => 'Miran',
];
}

Ne vem, če bi tudi array pravilno vrnil, lahko probaš.

Drugače pa je soap v PHP-ju ena precej grozna stvar (no SOAP nasplošno je grozna stvar) in nekatere zadeve so praktično nemogoče brez extendanja native liba (naprimer avtentikacija prek headerjev, če bi rad še custom headerje pošiljal ipd...)



Za osnovne stvari pa gre čez.


všeč(1) ni všeč(0) spam(0)
 
Javornik 15. nov 2016 08:38:25 Pridružen od:
15. jun 2010
431 objav
375 27 4
#6

Sedaj sem uspel service pripraviti do tega, da vrača pravilno formatiran response. Normalno pa sem naletel na novo težavo :) In sicer ko mi zunanji webservice pošlje PDF, mu moj webservice vrne error 500. V usage logu je zabeležen error 500, medtem ko v error logu ni ničesar.

Opažam da je tale SOAP res pain in the ass, ampak žal nimam druge izbire.


všeč(0) ni všeč(0) spam(0)
 
spicey 15. nov 2016 11:52:53 Pridružen od:
2. avg 2007
70 objav
87 3 3
#7

Tole bi moralo pomagat.



To, da dobiš debug namesto 500, si pa pač confe pošvasaj.


všeč(1) ni všeč(0) spam(0)
 
Javornik 15. nov 2016 12:49:47 Pridružen od:
15. jun 2010
431 objav
375 27 4
#8

Najbolj mi je zanimivo to, da imam v serverju definirani dve funkciji. Prva prenaša meta podatke o dokumentu in deluje OK, druga ki skrbi za prenos samega dokumenta, pa vrača 500 error.



spicey sem puskuil tudi na način prikazan na linku in je enako.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se