PHP Soap调用Error

时间:2015-02-23 09:07:52

标签: php web-services soap

我正在尝试使用SOAP / wsdl连接到webservice,但我经常收到错误。我是php中的soap-api新手。我有一份api详细信息,它显示:

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

有人可以建议问题存在吗?它击中&amp;尝试多次,但无法得到错误点。

2 个答案:

答案 0 :(得分:1)

您可以在服务器端调试POST的执行吗?从我这边猜测,但我认为你没有在请求中设置一个强制值,服务器需要对你的对象进行反序列化。因此 NullReferenceException

答案 1 :(得分:0)

问题已解决。

Request数组应如下所示:

$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
    );