Я пытаюсь сделать PHP-клиент для веб-службы WCF.Но я получаю некоторые ошибки, когда я вызываю функции сервиса.
App.config
<system.serviceModel>
<services>
<service behaviorConfiguration="MyServiceBehavior"
name="GSC.Wcf.Services.CartService">
<endpoint address=""
binding="basicHttpBinding"
contract="GSC.Wcf.Services.ICartService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8731/CartService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
Функция:
> public int Addiere(int a, int b)
{
return a + b;
}
PHP-запрос:
> $client = new SoapClient("http://localhost:8731/CartService?wsdl");
>
> $result = $client->Addiere(2,4);
для этихЯ получаю сообщение об ошибке типа:
"Исключение Uncaught SoapFault: [a: DeserializationFailed] средство форматирования Formatierer повторно выпустило исключение во время десерилизации сообщения: не удалось десериализовать тело запроса сообщенияпредназначен для операции "Addiere". Ожидается конечный элемент "Body" aus Namespace "http://schemas.xmlsoap.org/soap/envelope/".Найден элемент "param1" пространства имен "".
На немецком языке:
Неустранимая ошибка: Uncaught Исключение SoapFault: [a: DeserializationFailed] Der Formatierer hat beim Deserialisierender Nachricht eine Ausnahme ausgel¶st: Fehler beim Deserialisieren des Textkürpers der Anforderungsnachricht for Vorgang "Addiere".Es wurde das Endelement "Body" aus Namespace "http://schemas.xmlsoap.org/soap/envelope/" erwartet. Gefunden wurde" Element "param1" aus Namespace "" ". Zeile 2, позиция 148. в C: \ xampp \ htdocs \ TestClient \ Client.php: 6 Stackтрассировка: 0 C: \ xampp \ htdocs \ TestClient \ Client.php (6): SoapClient -> __ call ('Addiere', Array) # 1 C: \ xampp \ htdocs \ TestClient \ Client.php (6): SoapClient-> Addiere (2, 4) # 2 {main}, брошенный в C: \ xampp \ htdocs \ TestClient \ Client.php в строке 6
Но эта функция работает:
C #
> public string Message()
{
return "WORD";
}
PHP
> $result = $client->Message();
var_dump($result);
result
object (stdClass) # 2 (1) {["MessageResult"] => string (4)) "WORD"} WORD
единственная проблема в том, что тип возвращаемого значения не является строкой.
Может кто-нибудь догадаться, что не так, или я могу опубликовать еще кое-что наподобие wsdl? ИлиКто-нибудь знает хорошие источники, где я могу посмотреть, как я могу получить правильные конфигурации для связи с моим сервисом?