none
Вызов WCF сервиса из PHP RRS feed

  • Вопрос

  • Добрый день, господа. Есть проблемка, которую не удатся решить.

    Есть WCF сервис:

     [ServiceContract(Namespace = "http://test.com.ua/DataService")]
      [XmlSerializerFormat]
      public interface IInsuranceService
      {
        [OperationContract]
        double Get_OSAGO_Pay([MessageParameter(Name = "param1")]int t_agr, [MessageParameter(Name = "param2")]int t_country, [MessageParameter(Name = "param3")]int fran,
          [MessageParameter(Name = "param4")]string K1, [MessageParameter(Name = "param5")]int K2, [MessageParameter(Name = "param6")]int K3, [MessageParameter(Name = "param7")]int K5,
          [MessageParameter(Name = "param8")]int K4, [MessageParameter(Name = "param9")]int K7, [MessageParameter(Name = "param10")]bool privilage,
          [MessageParameter(Name = "param11")]string id_comp);
      }
    
      [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
      public class InsuranceService : IInsuranceService
      {
        public double Get_OSAGO_Pay(int t_agr, int t_country, int fran, string K1, int K2, int K3, int K5, int K4, int K7, bool privilage, string id_comp)
        {
         ...
        }
      }
    


    Я сгенерил через wsdl.exe прокси, вызвал из консольного проекта этот метод, передается следующее:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <Get_OSAGO_Pay xmlns="http://test.com.ua/DataService">
    <param1>3</param1>
    <param2>1</param2>
    <param3>0</param3>
    <param4>B3</param4>
    <param5>1</param5>
    <param6>1</param6>
    <param7>1</param7>
    <param8>2</param8>
    <param9>13</param9>
    <param10>false</param10>
    <param11>tas000001</param11>
    </Get_OSAGO_Pay>
    </soap:Body>
    </soap:Envelope>
    


    Все правильно, все работает.

    Теперь заказчик вызывает сервис из PHP

    $client = new SoapClient("http://test.com.ua/DataService/InsuranceService.svc?wsdl");
    
    $result = $client->Get_OSAGO_Pay(3,1,1,'B3',1,1,1,2,12,false,'tas000001');
    


    И вот тут и проблема. На сервер вместо нужных параметров приходят нули и пустые строки. А передается следующее:

     <?xml version="1.0" encoding="UTF-8" ?> 
     <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test.com.ua/DataService">
    <SOAP-ENV:Body>
     <ns1:Get_OSAGO_Pay /> 
     <param1>3</param1> 
     <param2>1</param2> 
     <param3>1</param3> 
     <param4>B3</param4> 
     <param5>1</param5> 
     <param6>1</param6> 
     <param7>1</param7> 
     <param8>2</param8> 
     <param9>12</param9> 
     <param10>false</param10> 
     <param11>tas000001</param11> 
     </SOAP-ENV:Body>
     </SOAP-ENV:Envelope>
    
    На что обратили внимание - <ns1:Get_OSAGO_Pay /> -  сразу закрытый, и параметры после него. При этом заказчик вызывал тестовые сервисы с сайта www.xmethods.net , и там параметры передаются внутри тега. Явно wcf сервису чего-то не хватает, только чего ? 

    28 июля 2011 г. 11:00

Ответы