PHP SOAP server
4 naročniki
4 naročniki
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?
7 odgovorov
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.
Č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.
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.