PHP: SOAP -> XML genereren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 18-09 20:23
Hoi,

ik zit met het volgende probleem. Voor een data request naar een soap service probeer ik dit in PHP5 voor elkaar te boksen. Mijn SOAP kennis is nihil. Na heel wat documentatie te hebben gelezen (php.net, google, nusoap classes ed.) kom ik nu weer niet uit iets wat volgens mij heel simpel zou moeten zijn.

Het probleem zit hem in het genereren van de XML

Dit is hoe het er nu uitziet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
$client = new SoapClient("https://xml.192.com/NetID.cfc?wsdl", array('trace'=>true, 'exceptions'=>true));

    $object = $client->search(
        array(
            "Authentication" => array(
                "Username" => "username",
                "Password" => "password",
            ),
            
            "IP"=>"193.138.228.26",
        )
    );


en volgens mijn voorbeeld moet het er alsvolgt uit gaan zien:

code:
1
2
3
4
5
6
7
<NetID type ="Search"> 
 <Authentication> 
  <Username>username</Username> 
  <Password></Password> 
 </Authentication> 
 <IP>193.138.228.26</IP>
</NetID>



Het gaat dus om
code:
1
<NetID type ="Search">


nu heb ik op php.net de 2 functies:

- SoapParam, en
- SoapVar

gezien. Ik ben hier behoorlijk mee aan het experimenteren geweest maar kom er niet uit. De error die ik krijg is:

"Unable to parse XML document"

Ik heb daarnaast de volgende array structuur gezien: array("NetID" => array("_" => "", "type"=>"Search"));

Ik sta bijna op het punt om zelf maar een xml te genereren zonder dat hele soap verhaal. Ik vind dat de php manual hierin ook een beetje te kort schiet maar misschien ligt hem dat ook aan mij ;)

Wie o wie kan mij een zetje in de goede richting geven?

[ Voor 0% gewijzigd door MrQcue op 19-08-2009 16:12 . Reden: Sluit tag voorbeeld vergeten ]


Acties:
  • 0 Henk 'm!

  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 24-06 20:21

_Gekkie_

And the cow said: Helloooooow?

Heb je al gekeken naar je lastRequest?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
$options = array('trace'=>1, 'exceptions'=>1);
$client=new SoapClient('https://xml.192.com/NetID.cfc?wsdl', $options); 

try{ 
  $params = array();
  $client->search($params); 
}catch(SoapFault $fault){ 
  echo 'Request : <br/><xmp>', 
  $client->__getLastRequest(), 
  '</xmp><br/><br/> Error Message : <br/>', 
  $fault->getMessage(); 
} 
?> 

Gekkie is a proud member of TheBenny!


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:29

BCC

Is soap niet een beetje overkill voor deze 3 regels XML of is de bedoeling dat je na het authen interessantere dingen gaat doen :)?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 18-09 20:23
Nee, dit is het meest simpele voorbeeld en er zijn soap calls met veel meer parameters. Ik loop hier alleen net op stuk. Ik heb wel een ander soap request die goed werkt maar die heeft die 'rare' node/property niet :)

Ik vind ook erg weinig commentaar op php.net over deze zaken. Ik hoop dat iemand mij over dit stuikelblok kan helpen want verder lijkt het prima te gaan.

Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 18-09 20:23
Last Request geeft me nu het volgende:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://corpwsdl.oneninetwo" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:search><searchPacket xsi:type="xsd:string">Array</searchPacket><apiVersion xsi:nil="true"/></ns1:search></SOAP-ENV:Body></SOAP-ENV:Envelope>

Acties:
  • 0 Henk 'm!

  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 24-06 20:21

_Gekkie_

And the cow said: Helloooooow?

Ik denk trouwens dat je die login parameters in je soap client moet zetten en de search method aanroep puur een array met het ip moet opnemen.. je ziet het ook in je last request dat er bij 'searchPacket' een 'Array' staat en niet hetgeen wat je wilt...

(of zie ik iets over het hoofd op dit tijdstip? :?)

Gekkie is a proud member of TheBenny!


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:29

BCC

Wow, nu weet ik weer waarom ik hiervoor altijd REST gebruik :) Wikipedia: Representational State Transfer

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Bl4ckviper
  • Registratie: Mei 2002
  • Laatst online: 06-08 00:09

Bl4ckviper

BlaBlaBla

REST wou ik ook al roepen ;)
Vette overkill hiervoor om SOAP te gebruiken

Be fast .... Be furious....

Pagina: 1