在php中使用ASP.NET WebService并返回soap错误

时间:2011-05-18 19:28:41

标签: php asp.net web-services

我试图在php中调用.net webservice 下面是我的代码。

<?php
    $client = new SoapClient("http://test.etech.net/PanelIntegration/PanelIntegration.asmx?wsdl");

         <?php  
         $sh_param = array( 
                            'Username'    =>    'IntegratorLPI', 
                            'Password'    =>    'password531'); 
                $headers = new SoapHeader('http://wms.etech.net/', 'UserCredentials', $sh_param);
                 $client->__setSoapHeaders($headers);   



                $params = array('CustomerName' => 'Mr Smith','ContactMobileNo' => '01237 376347',
                                'AddressLine1' => '33 Amblecote Road',
                                'AddressTown' => 'Cambridgeshire',
                                'AddressPostCode' => 'NW23 6TR',
                                'VendorAddressLine1' => '80 Norton Road',
                                'VendorAddressTown' => 'Hickley ',
                                'VendorAddressCounty' => 'Cambridgeshire',
                                'VendorAddressPostCode' => 'NW23 2AQ',
                                'RegionalOfficeID' => '3',
                                'ExternalNotes' => 'Case Accepted',
                                'UPRN' => '',
                                'InstructionTypeID' => '2',
                                'PropertyTypeID' => '11',
                                'PropertyTenure' => '2',
                                'SurveyorID' => '23',
                                'RRN' => '0240-9002-0391-3520-0020',
                                'NewInstruction'=> 'true',
                                'StatusID' => '1'
                                );
                $result = $client->__soapCall("UpdateInstruction", $params );

                print_r(    $result);

    ?>

我有这个错误 致命错误:未捕获的SoapFault异常:[soap:Server]服务器无法处理请求。 ---&GT;你调用的对象是空的。在C:\ xampp \ htdocs \ test2.php:33堆栈跟踪:#0 C:\ xampp \ htdocs \ test2.php(33):SoapClient-&gt; __ soapCall('UpdateInstructi ...',Array)#1 { main}在第33行的C:\ xampp \ htdocs \ test2.php中抛出

2 个答案:

答案 0 :(得分:1)

您可能需要发送以下内容:

 $result = $client->__soapCall("UpdateInstruction", array('Instruction' => $params );

其中,指令是您传递的对象的名称。

答案 1 :(得分:0)

看起来服务器端抛出了NullReferenceException。因此,在服务器端发生该错误的任何功能的参数都是一个问题。

无论为什么,根据最佳实践,这是.NET服务中的错误。 NullReferenceException应该被更具体的东西取代。

您是否可以与编写该服务的任何人联系以获取更多信息以进行故障排除?很可能你的$params数组中有一个错误名称的参数,但你可能需要服务编写者的帮助。