Ошибка вызова PHP-мыла

0

Я пытаюсь подключиться к webservice с помощью SOAP/wsdl, но я постоянно получаю сообщение об ошибке. Я новичок в soap-api в php. У меня есть документ api detail, он показывает:

public WSGetCalendarFareResponse GetCalendarFare(WSGetCalendarFareRequest calanderFareRequest)

Я сделал свой код соответствующим образом, но все же нашел ошибку/исключение. Просмотрите мой PHP-код в следующем:

$wsdl = "http://api.abc.com/xyz/service.asmx?wsdl"; // This is a test Web Service URL
    $h = array();
    $opta["GetCalendarFare"]["request"]= array(
    "Origin"=>"DEL",
    "Destination"=>"IXR",
    "DepartureDate"=>"2015-05-01T00:00:00",
    "ReturnDate"=>"2015-05-01T00:00:00",
    "Type"=>"OneWay",
    "CabinClass"=>"All",
    "PreferredCarrier"=>"",
    "AdultCount"=>1,
    "ChildCount"=>1,
    "InfantCount"=>"0",
    "SeniorCount"=>"0",
    "PromotionalPlanType"=>"Normal",
    "IsDirectFlight"=>false
    );

    $client_header = new SoapHeader('http://192.168.0.0/TEST/BookingAPI','AuthenticationData',$hparams,false);
    $cliente = new SoapClient($wsdl, array('trace' => 0));
    $cliente->__setSoapHeaders(array($client_header));
    try{
    $h= (array)$cliente->__call('GetCalendarFare',$opta);
    }catch(Exception $e)
    {
        echo '<pre>';
        var_dump($e);
    }

Когда я выполняю свой код, он возвращает следующую ошибку:

"System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at BookingAPI.WSCalendarFareInput(WSGetCalendarFareRequest calanderFareRequest) in c:\inetpub\wwwroot\api.tektravel.com\TboApi_V7\App_Code\Service.cs:line 4544
   at BookingAPI.GetCalendarFare(WSGetCalendarFareRequest calanderFareRequest) in c:\inetpub\wwwroot\api.tektravel.com\TboApi_V7\App_Code\Service.cs:line 4360

Кто-нибудь может предложить, где проблема? Он ударил & попробовал много раз, но не смог получить ошибку.

Теги:
soap
web-services

2 ответа

1

Можете ли вы отладить выполнение вашего POST на стороне сервера? Это тяжелое угадывание с моей стороны, но я предполагаю, что вы не устанавливаете обязательное значение в запросе, который серверу нужно десериализовать ваш объект. Следовательно, исключение NullReferenceException.

  • 0
    Спасибо Себ. Вы правы, я сделал ошибку в запросе. Я должен установить значение запроса следующим образом: $ opta ["GetCalendarFare"] ["calanderFareRequest"] = array (); Спасибо за ваш комментарий.
  • 0
    Тогда было бы неплохо, если бы вы могли пометить мой ответ как правильный или хотя бы проголосовать за него, чтобы оценить подсказку. ;)
0

Проблема решена.

Массив запроса должен выглядеть следующим образом:

$opta["GetCalendarFare"]["calanderFareRequest"]= array(
    "Origin"=>"DEL",
    "Destination"=>"IXR",
    "DepartureDate"=>"2015-05-01T00:00:00",
    "ReturnDate"=>"2015-05-01T00:00:00",
    "Type"=>"OneWay",
    "CabinClass"=>"Economy",
    "PreferredCarrier"=>"",
    "AdultCount"=>1,
    "ChildCount"=>1,
    "InfantCount"=>"0",
    "SeniorCount"=>"0",
    "PromotionalPlanType"=>"Normal",
    "IsDirectFlight"=>false
    );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню