ArrayOfString from .NET WCF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [PHP Home]     [PHP Users]     [Kernel Newbies]     [PHP Database]     [Yosemite]

  Powered by Linux