SOAP-Zugriff auf WCF-Dienst(C#) per PHP

15/03/2012 - 17:29 von Stefan Dreyer | Report spam
Hallo,



ich habe folgendes Problem. Ich muss auf einen WCF-Dienst per PHP
zugreifen. Leider ist die Dokumentation sehr spàrlich und die Beispiele
sind in C#.

Ich muss folgenden C#-Code in PHP nachbauen:

var objDic = new Dictionary<string, object>();
objDic.Add("gStrXml", xmlTxt);
objClient.ExecuteAsync(@"...\functions.py", "CreatePurchaseOrder()",
objDic);

Mein Versuch sieht folgendermaßen aus:

$param=array('pStrScriptPath' => '...\functions.py',
'pStrFunction' => "CreatePurchaseOrder()",
'pObjParams' => array(array($xmlTxt,"gStrXml")),
);
try {
$this->result=$this->client->Execute($param);
}
catch(SoapFault $fault) {
// Soap Error-Handler
$this->getError($fault);
}


Nur leider erhalte ich eine Fehlermeldung:

Fehler beim Deserialisieren von Parameter
http://tempuri.org/:pObjParams. Die InnerException-Nachricht war "Das
Element "Value" aus dem Namespace
"http://schemas.microsoft.com/2003/1...rays" kann keinen
untergeordneten Inhalt enthalten, der als Objekt deserialisiert werden
sollen. Verwenden Sie XmlNode[] zum Deserialisieren dieses
XML-Musters.". Weitere Details finden Sie unter "InnerException"

Hat jemand eine Ahnung, wie der korrekte Request aussehen muss? Leider
bringt der Suchknecht nichts aufschlussreiches zu Tage.
 

Lesen sie die antworten

#1 Ulf K.ad.ner
16/03/2012 - 09:46 | Warnen spam
Am 15.03.2012 17:29, schrieb Stefan Dreyer:

ich habe folgendes Problem. Ich muss auf einen WCF-Dienst per PHP
zugreifen. Leider ist die Dokumentation sehr spàrlich und die Beispiele
sind in C#.

Ich muss folgenden C#-Code in PHP nachbauen:

var objDic = new Dictionary<string, object>();
objDic.Add("gStrXml", xmlTxt);
objClient.ExecuteAsync(@"...\functions.py", "CreatePurchaseOrder()",
objDic);



Anhand dieses Codes làst sich da erstmal nicht viel nachvollziehen.

// Assoziatives Array
$objDic = array('gStrXml' => $xmlTxt);

Ohne zu wissen was xmlTxt für ein Object ist und was objClient genau für
ein Object ist kann man nix sagen.

Zeig dochmal ein detailierteres Beispiel in C#

Außerdem ist es unerlàßlich den Code des Services zu kennen wenn schon
keine anderen Infos dazu aufzutreiben sind. Sonst kann man kaum richtig
erahnen in welchen Format der Service Daten mit welchen Handler
erwartet. Notfalls da es etwas mehr sein wird halt über pastebin.com
Code posten.

Hilfreich wàr auch ein Blick in die serverseitige WCF Anwendungsconfig
(App.config) (geht natürlich nur wenn Du den Sourcecode des Services
hast :-) )

Kurz zusammengefast: Ohne genauere Infos wird das nix.

MfG, Ulf

Ähnliche fragen