[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-soap
Subject:    [SOAP] ArrayOfString from .NET WCF
From:       91.65.61.9
Date:       2007-12-22 16:20:36
Message-ID: 4F.D0.36613.4593D674 () pb1 ! pair ! com
[Download RAW message or body]

Hello,

I do have a serious Problem in creating a SOAP-request in nonWSDL-Mode. I use a .NET \
WCF Server and I am trying to consume its  webservice with SOAP PHP.

Here is what a .NET testclient would request:

<s:Envelope
 xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
  <CreateMediaEntity xmlns="http://wtf.core.MediaManager">
   <unit
    xmlns:a="http://WTF.WTFCore.Modules.Media"
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:Uri>http://dogz.de/myfile.avi</a:Uri>
    <a:Mimetype>myvideo</a:Mimetype>
    <a:Lossless>true</a:Lossless>
    <a:Md5>mymd5</a:Md5>
    <a:PublicURL>http://dogz.de/myfile.avi</a:PublicURL>
    <a:Keys xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
     <b:string>a</b:string>
     <b:string>b</b:string>
     <b:string>v</b:string>
    </a:Keys>
   </unit>
  </CreateMediaEntity>
 </s:Body>
</s:Envelope>

And here is what I ve got with PHP so far:

<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:ns1="http://wtf.core.MediaManager"
 xmlns:ns2="http://WTF.WTFCore.Modules.Media"
 xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
 <SOAP-ENV:Body>
  <ns1:CreateMediaEntity>
   <unit>
    <ns2:Uri>http://tmp.wtf.com/</ns2:Uri>
    <ns2:Mimetype>video/avi</ns2:Mimetype>
    <ns2:Lossless>true</ns2:Lossless>
    <ns2:Md5/>
    <ns2:PublicURL>http://files.wtf.com/biuvuzvui/</ns2:PublicURL>
    <ns2:Keys>
     <ns3:item>item1</ns3:item>
     <ns3:item>item2</ns3:item>
    </ns2:Keys>
   </unit>
  </ns1:CreateMediaEntity>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

What's  wrong are those <ns3:item>..</ns3:item> nodes. I created this request with \
the following code:

 $uri = new SoapVar($unit->uri, \
XSD_STRING,'','','Uri','http://WTF.WTFCore.Modules.Media');  $mimetype = new \
SoapVar($unit->mimetype, \
XSD_STRING,'','','Mimetype','http://WTF.WTFCore.Modules.Media');  $lossless = new \
SoapVar($unit->lossless, \
XSD_BOOLEAN,'','','Lossless','http://WTF.WTFCore.Modules.Media');  $md5 = new \
SoapVar($unit->md5, XSD_STRING,'','','Md5','http://WTF.WTFCore.Modules.Media');  \
$publicURL = new SoapVar($unit->publicURL, \
XSD_STRING,'','','PublicURL','http://WTF.WTFCore.Modules.Media');

  $keyVars = array();
  $keyVars[] =  new SoapVar('item1',XSD_STRING  \
,'string','','','http://schemas.microsoft.com/2003/10/Serialization/Arrays');  \
$keyVars[] =  new SoapVar('item2',XSD_STRING  \
,'string','','','http://schemas.microsoft.com/2003/10/Serialization/Arrays');  $ke = \
new SoapVar($keyVars, null  ,'string','', '', 'http://WTF.WTFCore.Modules.Media');

  $unit = new stdClass();
  $unit->Uri = $uri;
  $unit->Mimetype = $mimetype;
  $unit->Lossless = $lossless;
  $unit->Md5 = $md5;
  $unit->PublicURL = $publicURL;
  $unit->Keys = $ke;
  $un = new SoapParam(new SoapVar($unit,SOAP_ENC_OBJECT),'unit');

I ve tried each and any combination of SoapVar-parameters, but I don't manage to \
create those <ns3:string>...</ns3:string> instead  of <ns3:item>...</ns3:item> so \
that the .NET WCF server recognises the entries as part of the ArrayOfString? The \
request will end  up in a "null" at server side since it cant be parsed correctly.

Any help would be great.

-- 
Marcus Knuth 

-- 
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic