Zum Inhalt springen

extension mit soap client consuming .net webservice

Erstellt am 6. Februar 2009 · 1 Antwort · letzte Antwort am 6. Februar 2009

Tags: PHP, Frage

Tob1 ·

Hallo,

ich weiß, es ist eigentlich eine sehr spezielle Frage und nicht unbedingt ein typo3, sondern php Problem. Vielleicht hat trotzdem jemand Erfahrungen. Ich versuche aus meiner Extension einen webservice in .net aufzurufen.

Hier mein client:

<?php
try{
    $client = new
        SoapClient(
            "blub/TestService/Service.svc?wsdl"
        );      

  $params = array('value'=>"3",'value1' => "1"

);
    $webService = $client->GetData($params);
    $wsResult = $webService->GetDataResult;
    print  $wsResult;
} catch (Exception $e) {
    print  'Caught exception: '.  $e->getMessage(). "\n";
}
?>

Das .net interface:

<?php
Function GetData(ByVal value As Integer, ByVal value1 As Integer) As String
?>

Ich habe dabei Probleme die Parameter zu übergeben. Ich bekomme als output beim aufruf von GetData das ergebnis 3 + 0, es erkennt also nur den ersten Parameter.

Google sagt mir, dass ein problem mit der Kommunikation vorliegen könnte. MS benutzt document/literal und php rpc. Viele Posts habe ich gefunden, aber keine Lösung. Wie kann ich den Client auf document/literal Ebene bringen?

Ich benutze php5

danke im voraus

tobi

Tob1 ·

Ok, hat sich erledigt, bin selbst drauf gekommen:

require_once("nusoap/lib/nusoap.php");

$ns="http://tempuri.org/Imports";
$client = new nusoap_client("http://www..de:8080/TestService/Service.svc?wsdl", true);
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;

$params=array("value"=>"1","value1"=>"2");
$result = $client->call("GetData",$params,$ns,null,null,true,'document','literal');	
if ($client->fault) //soap_fault
{
	print "<h2>Soap Fault:</h2><pre>(".$client->fault->faultcode.")  ".
                $client->fault->faultstring."</pre>";
}
elseif ($client->getError())
{ 	
	print "<h2>Soap Error:</h2><pre>".$client->getError()."</pre>";
}
else
{ 	
print_r($result);
}