Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

SOAP Webservice, ik weet niet hoe ik bij de variabelen kom.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hier een Applicatie runnen van mijn werkgever,
en mijn werkgever wil dat wanneer hij bepaalde handelingen doet,
dit doorgestuurd word naar de webserver, en vervolgens word opgeslagen
in de database. De structuur in de applicatie is er al,
aangezien dit op dit moment bij een derde partij word opgeslagen op de webserver.
Nu hebben we onlangs een nieuwe website gekregen met allemaal toffe features,
en nu wil mijn werkgever dat het ipv naar de derde partij, naar onze eigen webserver word gestuurd.

Bijna alles is er nu dus al,
maar het is nu aan mij om een PHP SOAP server te maken,
waar vervolgens een aanvraag naar toe word gedaan, met een complexType/class als parameter,
en dat ik deze complexType/class dan verwerk aangezien hier de variabelen instaan,
deze variabelen in de database zet, en vervolgens een gelukt, of een gefaald return.

De hele structuur is er al, en er word ook wel in de database geschreven, alleen weet ik niet hoe ik de variabelen moet bereiken, waardoor er dus alleen lege strings in de database geschreven worden.

Zelf gebruik ik op dit moment SoapUI om te testen, maar ik krijg geen resultaat.

Het enigste wat ik eigenlijk heb om op terug te vallen is het WSDL bestand wie er als volgt uit ziet :

XML:
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
<s:element name="SaveRelation">
   <s:complexType>
      <s:sequence>
         <s:element minOccurs="0" maxOccurs="1" name="persistance" type="tns:Relation"/>
       </s:sequence>
    </s:complexType>
</s:element>

<s:complexType name="Relation">
   <s:sequence>
      <s:element minOccurs="1" maxOccurs="1" name="GUID" type="s1:guid"/>
      <s:element minOccurs="1" maxOccurs="1" name="ParentRelation" nillable="true" type="s1:guid"/>
      <s:element minOccurs="0" maxOccurs="1" name="RelationName" type="s:string"/>
      <s:element minOccurs="1" maxOccurs="1" name="VisitAddress" nillable="true" type="s1:guid"/>
      <s:element minOccurs="1" maxOccurs="1" name="DeliveryAddress" nillable="true" type="s1:guid"/>
      <s:element minOccurs="1" maxOccurs="1" name="Person_1" nillable="true" type="s1:guid"/>
      <s:element minOccurs="1" maxOccurs="1" name="Person_2" nillable="true" type="s1:guid"/>
      <s:element minOccurs="1" maxOccurs="1" name="Person_3" nillable="true" type="s1:guid"/>
      <s:element minOccurs="1" maxOccurs="1" name="Person_4" nillable="true" type="s1:guid"/>
      <s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="ChamberOfCommerceNumber" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="VatNumber" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="Fax" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="Telephone" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="InternetAddress" type="s:string"/>
      <s:element minOccurs="0" maxOccurs="1" name="E_mail" type="s:string"/>
      <s:element minOccurs="1" maxOccurs="1" name="Obsolete" type="s:boolean"/>
   </s:sequence>
</s:complexType>

<wsdl:message name="SaveRelationSoapIn">
   <wsdl:part name="parameters" element="tns:SaveRelation"/>
</wsdl:message>


Bovenstaande is het stuk waar ik niet weet hoe ik bij de variabelen moet komen.

Dus om op te sommen, Ik weet niet hoe ik met PHP de bovenstaande variabelen moet benaderen. Deze variabelen worden in een class meegestuurd als parameter naar de server voor een aanvraag. De server gaat de variabelen die in deze class staan vervolgens verwerken om ze in de database te zetten.

EDIT
------------------------------------------------------------------
Ik heb de hele SOAP server al werkenden, het enigste wat ik nu dus graag wil weten, is hoe ik de waardes (GUID, RelationName etc.) uit de complexType Relation kan halen. ;)

Als iemand mij hier mee kan helpen zou dit super fijn zijn!

Mvg,
Harmen.

[ Voor 3% gewijzigd door Verwijderd op 24-07-2013 08:10 ]


  • _Peter2_
  • Registratie: November 2008
  • Laatst online: 16:27
Wat doet het niet?

Heb je al eens gekeken op: http://www.php.net/manual/en/class.soapserver.php?

Via google op PHP Soap server tutorial kom je o.a. ook http://jimmyzimmerman.com...ver-with-php5-part-1.html tegen.

[ Voor 41% gewijzigd door _Peter2_ op 23-07-2013 13:20 ]

Diablo III: <GOT> Pteer#2475 --- POE: Dwergux


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
[google=php generate soap server from wsdl]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Verwijderd

Topicstarter
Ik weet wel wat ik aan het doen ben hoor :P
Ik weet alleen niet hoe ik in PHP de variabelen in het complexType Relation kan benaderen.

Verwijderd

Topicstarter
Zoals ik al zei, alles werkt wel, en ik weet wel hoe ik een soap server op moet zetten, het probleem is alleen dat wanneer ik de data uit de complexType Relation in de database moet zetten, er alleen empty strings ingezet worden, ik weet zelf niet precies hoe ik deze waardes moet benaderen namelijk.

  • mhaket
  • Registratie: Augustus 2006
  • Laatst online: 19:35
Misschien Zend library gebruiken om WSDL data te benaderen?

http://framework.zend.com/manual/1.12/en/zend.soap.wsdl.html

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:23

Creepy

Tactical Espionage Splatterer

En toen je een var_dump of een print_r deed op je variabele waar een Relation in zat toen zag je niks bruikbaars?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ja ik kreeg voornamelijk vage tekens te zien, maar aangezien het een class is die als parameter word meegestuurd naar de server, vroeg ik me af of het dan raar is dat een var_dump dan zoiets doet?
----------------------------------------------------------------------------------------------------------------------------------------------
‹‹Als ik overigens mijn parameter die dus word meegegeven (genaamd parameter aangezien die zo heette in het wsdl bestand) laat schrijven in mijn database op volgende manier, waarvan ik eerst dacht dat het zo zou moeten : $parameter.RelationName, weergeeft die in mijn database "ArrayRelationName".

[ Voor 53% gewijzigd door Verwijderd op 23-07-2013 13:50 ]


  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 20-11 09:10
Je moet wellicht even een class mapping toevoegen: http://php.net/manual/en/soapclient.soapclient.php

Read the code, write the code, be the code!


  • TJVB
  • Registratie: Januari 2008
  • Laatst online: 20-11 12:48
Kun je anders een stukje code laten zien, dan kunnen we meekijken wat er verkeerd gaat.

Verwijderd

Topicstarter
Ja tuurlijk!

Hier onder mijn SaveRelation functie,
zoals ik al vermeldde, weet ik dus niet precies hoe ik de variabelen moet benaderen,
en deze methode werd gebruikt in een voorbeeld op het internet, maar het werkt niet voor mij.

PHP:
1
2
3
4
5
6
7
8
9
10
function SaveRelation($parameters)
{
    $parameters = new stdClass();
    $parameters->persistance = new stdClass();
    
    echo $parameters->persistance->GUID;
    $guid = $parameters->persistance->GUID;

    mysql_query("INSERT INTO webservicetest (guid) VALUES ('". $guid . "')")or die (mysql_error());    
}

  • TJVB
  • Registratie: Januari 2008
  • Laatst online: 20-11 12:48
Je overschrijft in die functie meteen je eigen variabele ( $parameters )
Wat is je code om de service uit te lezen?

Verwijderd

Topicstarter
hoe bedoel je "de service uitlezen" ?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zou je a.u.b. gebruik willen maken van de [code=taal][/code] tags, en niet zo veel enters gebruiken, dan zijn je posts een stuk beter te lezen.

[ Voor 3% gewijzigd door Woy op 24-07-2013 07:37 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Sorry, ik heb het aangepast.

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
TJVB schreef op dinsdag 23 juli 2013 @ 14:53:
Je overschrijft in die functie meteen je eigen variabele ( $parameters )
dit dus...

zet helemaal aan het begin van je functie eens een print_r($parameters);

Verwijderd

Topicstarter
Nadat ik eerst een 1 terug kreeg van mijn print_r($parameters) kwam ik erachter dat ik deze naar true moest zetten als ik een string wou krijgen haha :P

maargoed, dit kreeg ik terug wanneer ik $parameters print_r 'de :

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [GUID] => ?
    [ParentRelation] => ?
    [RelationName] => ?
    [VisitAddress] => ?
    [DeliveryAddress] => ?
    [Person_1] => ?
    [Person_2] => ?
    [Person_3] => ?
    [Person_4] => ?
    [Country] => ?
    [ChamberOfCommerceNumber] => ?
    [VatNumber] => ?
    [Fax] => ?
    [Telephone] => ?
    [InternetAddress] => ?
    [E_mail] => ?
    [Obsolete] => ?
)

Verwijderd

Topicstarter
Ik heb hem werkend, ik kan hem nu dus gewoon bereiken door middel van $parameters['propertyname'];

Hardstikke bedankt voor al jullie hulp!
Pagina: 1