Ik moet een webservice bouwen die aan de hand van meerder artikelnummers (Ean-nummers), interne artikelen opzoeken en het interne artikelnummer, beschikbaarheid en de prijs als response sturen.
Wat ik heb is het volgende:
De request ziet er als volgt uit:
Dus er komen meerder artikelen binnen in de webservice.
Al deze artikelen moeten worden uitgelezen in een array (kan volgens mij met SimpleXML, correct me if I'm wrong).
Dan de code van mijn voorlopige webservice:
Zoals jullie zien staat er in de functie tussen haakjes een aantal vraagtekens.
Wat moet ik hier nu als input neerzetten? Is dat een array 'ArticleQuery' ???
Ik snap dus niet hoe ik een multi-dimensional array kan inlezen. Gaat dat automatisch als er een XML-request komt?
Tevens moet er als response een multi-dimensional array komen met alle artikelen die bij de request-artikelen passen. Dus ik moet een array maken die er als volgt uitziet (volgens mij...):
Wordt dit dan ook weer automatisch naar XML geconverteerd als de response gestuurd wordt?
Ik hoop dat jullie mij een beetje kunnen helpen.
Wat ik heb is het volgende:
De request ziet er als volgt uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?xml version="1.0" encoding="utf-8"?> <FindArticles> <ArticleQuery> <ArticleNumber/> <EanCode>3528702337622</EanCode> <Quantity>4</Quantity> </ArticleQuery> <ArticleQuery> <ArticleNumber/> <EanCode>3528704566938</EanCode> <Quantity>1</Quantity> </ArticleQuery> </FindArticles> |
Dus er komen meerder artikelen binnen in de webservice.
Al deze artikelen moeten worden uitgelezen in een array (kan volgens mij met SimpleXML, correct me if I'm wrong).
Dan de code van mijn voorlopige webservice:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
| <?php // Pull in the NuSOAP code require_once('lib/nusoap.php'); $ns="http://www.domein.nl/Webservice"; $server = new soap_server(); $server->configureWSDL('testService', $ns); $server->wsdl->schemaTargetNamespace = $ns; $server->wsdl->addComplexType( 'Article', 'complexType', 'struct', 'all', '', array( 'statusCode' => array('statusCode', type=>'xsd:string'), 'articleNumber' => array('articleNumber', type=>'xsd:string'), 'availability' => array('availability', type=>'xsd:string'), 'price' => array('price', type=>'xsd:string') ) ); $server->register( 'findArticles', // method name array( // input parameters 'ArticleQuery'=>array( 'EanCode'=>'xsd:string', 'Quantity'=>'xsd:string' ) ), array('return'=>'tns:Article'), // output parameters 'urn:FindArticlesVanZijl_wsdl', 'urn:FindArticlesVanZijl_wsdl#findArticles', 'rpc', 'encoded', 'returns articles from database Van Zijl by given ean-number' ); //Define the method as a PHP function function findArticles(????????){ # hier maakt ie connectie met DB # en haalt ie artikelen op uit de database, allemaal redelijk te doen #returning values: if ($error){ return $error; }else{ $statusCode = 'found'; $avail = 'yes'; # return values: $article = array( 'statusCode'=> $statusCode, 'articleNumber'=>$artNumber, 'availability'=>$avail, 'price'=>$price ); return $article; }//else }//function // Use the request to (try to) invoke the service $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?> |
Zoals jullie zien staat er in de functie tussen haakjes een aantal vraagtekens.
Wat moet ik hier nu als input neerzetten? Is dat een array 'ArticleQuery' ???
Ik snap dus niet hoe ik een multi-dimensional array kan inlezen. Gaat dat automatisch als er een XML-request komt?
Tevens moet er als response een multi-dimensional array komen met alle artikelen die bij de request-artikelen passen. Dus ik moet een array maken die er als volgt uitziet (volgens mij...):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $articleResponse = array( array( 'statusCode'=>'1', 'articleNumber'=>'1234', 'availability'=>'yes', 'price'=>'74.00' ), array( 'statusCode'=>'1', 'articleNumber'=>'5678', 'availability'=>'yes', 'price'=>'69.00' ) #etc ); |
Wordt dit dan ook weer automatisch naar XML geconverteerd als de response gestuurd wordt?
Ik hoop dat jullie mij een beetje kunnen helpen.