Hoi,
Ik probeer op dit moment om een WCF service vanuit een PHP pagina te benaderen met de NuSoap library.
Ik kan de webservice wel aanroepen maar ik krijg een verkeerd resultaat terug. Ik heb een methode (KlantBestaat) die een boolean teruggeeft. Vanuit een Windows applicatie met een refrence daarheen krijg ik netjes de waarde TRUE terug als ik een bestaande klant opgeef. Als ik dezelfde call vanuit PHP uitvoer krijg ik false terug. Ik heb nog niet kunnen vinden waar het probleem nu zit.
Zie hier voor de uitvoer van de trace bestanden van beide aanroepen. Hopenlijk ziet iemand van jullie wat er aan de hand is. Ik heb kan het maar niet uit die log halen.
www.ordelman.org/temp/messages_windows2.svclog
www.ordelman.org/temp/messages_php.svclog
Het valt me wel op dat de PHP kant een GET operatie doet en de Windows client een POST. Met SvcTraceViewer zie ik in het parameters ook niet staan bij de PHP verzoek en bij de andere zie ik netjes welke paramaters er binnen gekomen zijn.
Hierbij de config van de WCF Service:
De php code
EDIT:
Net een extra methode gemaakt die een string als parameter heeft en een string retouneert. Die string is een vaste rekst plus de parameter. Als ik de methode aanroep via NuSoap krijg ik alleen het constante deel terug. Blijkbaar komen de parameters dus gewoon niet door.
Ik probeer op dit moment om een WCF service vanuit een PHP pagina te benaderen met de NuSoap library.
Ik kan de webservice wel aanroepen maar ik krijg een verkeerd resultaat terug. Ik heb een methode (KlantBestaat) die een boolean teruggeeft. Vanuit een Windows applicatie met een refrence daarheen krijg ik netjes de waarde TRUE terug als ik een bestaande klant opgeef. Als ik dezelfde call vanuit PHP uitvoer krijg ik false terug. Ik heb nog niet kunnen vinden waar het probleem nu zit.
Zie hier voor de uitvoer van de trace bestanden van beide aanroepen. Hopenlijk ziet iemand van jullie wat er aan de hand is. Ik heb kan het maar niet uit die log halen.
www.ordelman.org/temp/messages_windows2.svclog
www.ordelman.org/temp/messages_php.svclog
Het valt me wel op dat de PHP kant een GET operatie doet en de Windows client een POST. Met SvcTraceViewer zie ik in het parameters ook niet staan bij de PHP verzoek en bij de andere zie ik netjes welke paramaters er binnen gekomen zijn.
Hierbij de config van de WCF Service:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <services> <service name="vlaggen.KlantenWindowsService.KlantenService" behaviorConfiguration="KlantenWindows_Behavior"> <!--<service name="vlaggen.KlantenWindowsService.KlantenService" behaviorConfiguration="Secure_KlantenWindows_Behavior">--> <host> <baseAddresses> <add baseAddress="http://localhost:8000/KlantenService"/> </baseAddresses> </host> <!-- this endpoint is exposed at the base address provided by host: http://localhost:8000/CalculatorService --> <endpoint address="" binding="basicHttpBinding" name="BasicEndpoint" contract="vlaggen.KlantenWindowsService.IKlantenService"/> <!-- the mex endpoint is explosed at http://localhost:8000/CalculatorService/mex --> <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="KlantenWindows_Behavior"> <serviceMetadata httpGetEnabled="true" /> <!-- Met deze instelling kun je aangeven dat debug exceptions teruggegeven worden aan de client. Zet deze alleen op true bij ontwikkelen en debuggen --> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> |
De php code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| <?php require_once('./lib/nusoap.php'); $wsdl="http://localhost:8000/KlantenService?wsdl"; $client=new soapclient($wsdl, "wsdl"); // get the SOAP proxy object, which allows you to call the methods directly $proxy = $client->getProxy(); $paramKlantBestaat=array(); $paramKlantBestaat->klantnaam = (string)"test45"; $paramKlantBestaat->adres = (string)"Industrieweg 90"; $paramKlantBestaat->postcode = (string)"5405 NP"; // get the result, a native PHP type, such as an array or string $result = $proxy->KlantBestaat($paramKlantBestaat); if ($client->fault) { echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '<h2>Error</h2><pre>' . $err . '</pre>'; } else { // Display the result echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>'; } } ?> |
EDIT:
Net een extra methode gemaakt die een string als parameter heeft en een string retouneert. Die string is een vaste rekst plus de parameter. Als ik de methode aanroep via NuSoap krijg ik alleen het constante deel terug. Blijkbaar komen de parameters dus gewoon niet door.
Lekker duurzaam. Skoda Enyaq EV - First edtion, Alpha Innotec Brine warmtepomp (MSW2-6S), Totaal 12135 Wp aan Zonnepanelen geïnstalleerd.