B-Man schreef op dinsdag 19 augustus 2008 @ 00:06:
Wat zie je als je de URL van de WSDL (http://localhost/stockserver.php?wsdl) aanroept?
Je zegt dat je een wit scherm ziet als je de client aanroept, wat betekent dat er ergens iets niet werkt zoals het hoort. Je hebt error_reporting wel op het hoogste niveau gezet, maar vergeet niet dat je via php.ini kan instellen dat errors nooit naar de client gegooid worden. Ze verschijnen dan enkel in de error_log file.
Kortom: kijk eens in de error_log van php. Kijk verder dus eens (via een phpinfo() of door direct in php.ini te kijken) wat de waarden zijn van "display_errors" en "error_log". Ik verwacht dat je "display_errors" uit hebt staan, en error_log naar een bestand wijst waar je de foutmeldingen in terugvindt.
Gisteravond uiteraard nog verder gegaan en heb het opgelost. Ik heb SOAPUI gedownload. Een goed programma. Dan krijg je foutmeldingen te zien. Ik had wat in de sql.ini veranderd waardoor de database connectie niet meer werkte, maar die foutmelding werd niet doorgegeven in mijn scherm. Met SOAPUI werd dit wel weergegeven.
Zit nu alleen wel met het volgende en ik hoop dat dit mijn laatste vragen zijn.
Hij geeft maar 1 item weer terwijl het er meer moeten zijn. En hoe kan ik nog meer attributen weergeven uit de database? Nu geeft hij alleen CDARTIKEL weer. En als ik dan meer attributen heb hoe moet ik dit dan splitsen van een array?
Dit is nu de code:
client
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| <?php
error_reporting(E_ALL);
require_once('lib/nusoap.php');
$wsdl="http://localhost:80/stockserver.php?wsdl";
$c = new nusoap_client("http://localhost/stockserver.php?wsdl", true);
$proxy = $c->getProxy();
$artikel = $proxy->call('getStockQuote', array('VVSUBGROEPA' => 'Rond', 'VVHOOFDGROEP' => 'RVS'));
echo "Artikel 'RVS' 'Rond' is $artikel.";
?> |
server
PHP:
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
36
37
38
39
40
| <?php
error_reporting(E_ALL);
function getStockQuote($symbol, $vvhoofdgroep) {
//mysql_connect('server','user','pass');
//mysql_select_db('test');
$prod_conn=odbc_connect("Nfsupplies","test","test","");
if (!$prod_conn)
{
exit("<font color='#FF0000'>Kan geen verbinding maken:</font> " . $prod_conn);
}
$query = "select CDARTIKEL FROM ARTIKEL WHERE (VVSUBGROEPA Like '$symbol') AND (VVHOOFDGROEP Like '$vvhoofdgroep') AND VVOPWEB = 'Ja'";
//SELECT stock_price FROM stockprices " . "WHERE stock_symbol = '$symbol'";
if (!$query)
{
exit("<font color='#FF0000'>fout in sql:</font> " . $query);
}
$result = odbc_exec($prod_conn, $query);
//mysql_query($query);
while ($row = odbc_fetch_array($result)){
return $row['CDARTIKEL'];
}
}
require('lib/nusoap.php');
$server = new soap_server();
$server->configureWSDL('stockserver', 'urn:stockquote');
$server->register("getStockQuote",
array('VVSUBGROEPA' => 'xsd:string', 'VVHOOFDGROEP' => 'xsd:string'),
array('return' => 'xsd:string', 'return' => 'xsd:string'),
'urn:stockquote',
'urn:stockquote#getStockQuote');
//$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
//$server->service($HTTP_RAW_POST_DATA);
$server->service(file_get_contents ('php://input'));
?> |
Wat ik geprobeerd heb:
client
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?php
error_reporting(E_ALL);
require_once('lib/nusoap.php');
$wsdl="http://localhost:80/stockserver.php?wsdl";
$c = new nusoap_client("http://localhost/stockserver.php?wsdl", true);
$proxy = $c->getProxy();
$artikel = $proxy->call('getStockQuote', array('VVSUBGROEPA' => 'Rond', 'VVHOOFDGROEP' => 'RVS'));
foreach ($artikel as $a) {
echo "Artikel 'RVS' 'Rond' is $a.";
}
?> |
Nu krijg ik een foutmelding.
Warning: Invalid argument supplied for foreach() in C:\wamp\www\stockclient.php on line 11
Het schijnt dat er dan 2 opties zijn. Of het is geen array of de waarde is 0 (integer). CDARTIKEL zijn idd nummers, maar het is geen integer. Hoe moet ik dit dan oplossen?
Ik hoop dat je me nog een keer wilt helpen.
[
Voor 9% gewijzigd door
damen18 op 19-08-2008 11:15
]