在php中从SOAP获取响应

在php中从SOAP获取响应,php,web-services,soap,wsdl,Php,Web Services,Soap,Wsdl,我试图在php中使用SOAP从web服务响应。实际上,它是预订航班前的付费API。我有两个案例来解决我的问题,在这两个案例中,我都没有得到正确的响应 这是密码 try{ $client = new SoapClient($url); print_r($client->__getFunctions()); $values = $client->getAvailability($input_xml); pri

我试图在php中使用SOAP从web服务响应。实际上,它是预订航班前的付费API。我有两个案例来解决我的问题,在这两个案例中,我都没有得到正确的响应

这是密码

        try{
        $client = new SoapClient($url);
        print_r($client->__getFunctions());
        $values = $client->getAvailability($input_xml);
        print_r($values);
        }catch(exception $e){
            echo 'error<br>';
            echo $e->getMessage();
        }
更新 这是一个只有一次飞行的示例响应

20875
            7303
            130
            0
            0
            0


            0
            0
            0




            319
            BLR
            2015-05-15T07:45:00
            BOM
            2015-05-15T06:15:00
            603
            AI
            603

            0
            Air India
            3860
            http://live.arzoo.com/FlightWS/image/AirIndia.gif


              3
              Z


              13250
              Z
              6625
              Business
              mek+yu2iz7Q=
              1000
              This fare is Non Refundable Booking Class : Z|Cancellation Penalty: All bookings done are subject to cancellation penalty levied by the airlines.<br>In addition to the airlines cancellation penalty, we charge a service fee of Rs. 50 per passenger for all cancellations.|Date Change Penalty: In addition to the airlines date change penalty, we charge a service fee of Rs. 50 per passenger.|
              0
              0
              0

            0
            3369
            74
            2150,147,1563
            2150,147,1072
            0,0,74
            0


        arzoo11
        h/jf17QHSJphWFSOTFWg8tk50VHVm+kKk3MJJ4NqTDo3mXlTqg2QNScTJzH+TWN+pNURIyTJYKOW
O8yH8+0tznjZpdCApJT4KQTfIRJRrTZDwLtSiN0xXggcK2BneoFH2Pr/Vo/CRI/xTgfh9d8ZSmFY
VI5MVaDyYfwphO4fcQEnEycx/k1jftlsnmWWqYGnJxMnMf5NY36YIq2FtLkfcHtsd+IDEhxpxJuT
v4YyS+QnEycx/k1jfv+QxLuqYmdiJxMnMf5NY37/kMS7qmJnYicTJzH+TWN+OT2lxrlMEOeSMz+b
qzlxwlz7VeZtrnP7Hv3jj2fYS5nICxQuxGH6/79fDhZYRaCPuGMF+eC/zteWO8yH8+0tzpu80ORl
KER+BD/GuWW7DZ2bbbGbXj1Z0HOJPC4p49y3JxMnMf5NY377cKnYYdkF4kP854vEBONogwbVnQw0
AohFgCa1qKcQs0PAu1KI3TFezaEuVisWRglDwLtSiN0xXs2hLlYrFkYJQ8C7UojdMV7NoS5WKxZG
CUPAu1KI3TFezaEuVisWRglDwLtSiN0xXtz6IhL3LsgmAeGKrEtqevYnEycx/k1jfuI7TUNwKUQ0
x8cEZXwg6V6nH6TvjNSCRUPAu1KI3TFej7Y1Yu+fHhBzqWDbQb1E1IoDSY1wep73c6lg20G9RNSn
Ux8jbjT6hrp5c9fnhtxFljvMh/PtLc5KhxZKtuH3cJY7zIfz7S3O/SUTzGstO8VofEuXJIOZ0ptt
sZtePVnQqDUuNolYhru/Xw4WWEWgj4D+4B+dOi9iv18OFlhFoI+A/uAfnTovYr9fDhZYRaCPCq4g
JlaBMkdzqWDbQb1E1KdTHyNuNPqGz7rBmgDnrsY=
20875
7303
130
0
0
0
0
0
0
319
BLR
2015-05-15T07:45:00
物料清单
2015-05-15T06:15:00
603
人工智能
603
0
印度航空
3860
http://live.arzoo.com/FlightWS/image/AirIndia.gif
3.
Z
13250
Z
6625
生意
mek+yu2iz7Q=
1000
此票价为不可退还的订票等级:Z |取消罚款:所有订票都将受到航空公司的取消罚款。
除航空公司取消罚款外,我们对所有取消的订票收取每位乘客50卢比的服务费。|日期更改罚款:除航空公司日期更改罚款外,我们向每位乘客收取50卢比的服务费| 0 0 0 0 3369 74 2150,147,1563 2150,147,1072 0,0,74 0 arzoo11 h/JF17QHSJPHWFSOTFWWG8TK50VHVM+kKk3MJJ4NqTDo3mXlTqg2QNScTJzH+TWN+PNURYTJYKOW O8yH8+0TZNJZpCaPjt4KqtFirjRtzDwltsIn0xXGGCK2BNOEFH2PR/Vo/CRI/xTgfh9d8ZSmFY VI5MVADYFWPHO4FCQENEYCx/k1jftlsnmWWqYGnJxMnMf5NY36YIq2FtLkfcHtsd+IDEhxpxJuT v4YyS+QnEycx/k1jfv+QxLuqYmdiJxMnMf5NY37/kMS7qmJnYicTJzH+TWN+OT2lxrlMEOeSMz+b qzlxwlz7VeZtrnP7Hv3jj2fYS5nICxQuxGH6/79fDhZYRaCPuGMF+eC/zteWO8yH8+0tzpu80ORl KER+BD/GUWW7DZ2BBGBXJ1Z0HOJPC4P49Y3JXMNMF5NY377CKNYDKF4KP854VEBONOGWBVNQW0 AOHFGCA1QKCQS0PAU1KI3FEZAEUVISWRLDWLTSIN0xXS2HLLYRFKYJQ8C7UOJDMV7NOS5 WKXZG CuBaU1KI3FezaeuvisWRGLDWLTSIN0xXTZ6IHL3LSGMaegKretQevyneyCx/k1jfuI7TUNwKUQ0 X8CEZXWG6V6NH6VJNSRUPAU1KI3TFEJ7Y1YU+fHhBzqWDbQb1E1IoDSY1wep73c6lg20G9RNSn Ux8jbjT6hrp5c9fnhtxFljvMh/PtLc5KhxZKtuH3cJY7zIfz7S3O/SUTzGstO8VofEuXJIOZ0ptt SztepVNqduunolyHRU/Xw4WWEWgj4D+4B+dOi9iv18OFlhFoI+A/uAfnTovYr9fDhZYRaCPCq4g JLABMKDZQWDBQB1E1KDTHYNUPPQGZ7RBMGDNRSY=
我认为XML中的信息太多了

您有关于如何格式化XML以调用
getAvailability()
函数的文档吗

在我看来,XML更像这样:

<Request>   
    <Origin>BOM</Origin>
    <Destination>BLR</Destination>
    <DepartDate>2015-05-15</DepartDate>
    <ReturnDate>2015-05-20</ReturnDate>
    <AdultPax>1</AdultPax>
    <ChildPax>1</ChildPax>
    <InfantPax>1</InfantPax>
    <Currency>INR</Currency>
    <Preferredclass>B</Preferredclass>
    <mode>ROUND</mode> 
    <Clientid>7XXX</Clientid>
    <Clientpassword>XX</Clientpassword>
    <Clienttype>XXX</Clienttype>
    <PreferredAirline>AI,G8,IC,6E</PreferredAirline>
</Request>

没有简单的方法在HTML表中打印数据,因为响应是多维数组。
查看如何解析数组以打印HTML表。

根据WSDL,
in0
应该是
string

<wsdl:message name="getAvailabilityRequest">
    <wsdl:part name="in0" type="xsd:string"></wsdl:part>
</wsdl:message>


既然WSDL没有描述这种XML,您是怎么想到它的?您是否有此服务的其他文档

这是arzoo的航班可用性工作代码。。 使用SOAP客户端时,我也会遇到错误,但当我使用nusoap时,他们会给出结果。使用此代码,如果出现ip/密码不匹配之类的错误,那么您将调用arzoo来验证您的clientid和clientpassword

    <?php
  ini_set('max_execution_time','180');
    include 'lib/nusoap.php';
   $location_URL ='http://avail.flight.arzoo.com';
   $action_URL ='http://demo.arzoo.com/ArzooWS/services/DOMFlightAvailability?wsdl';
$Request = '<Request>
<Origin>BOM</Origin>
<Destination>DEL</Destination>
<DepartDate>2017-02-02</DepartDate>
<ReturnDate>2017-02-02</ReturnDate>
<AdultPax>1</AdultPax>
<ChildPax>0</ChildPax>
<InfantPax>0</InfantPax>
<Currency>INR</Currency>
<Clientid>Given by Arzoo.com</Clientid>
<Clientpassword>Given by Arzoo.com</Clientpassword>
<Clienttype>ArzooFWS1.1</Clienttype>
<Preferredclass>E</Preferredclass>
<mode>ONE</mode>
<PreferredAirline>AI</PreferredAirline>
</Request>';

$clientinfo = array('soap_version'=>SOAP_1_1,
'location' =>$location_URL,
'uri' =>$action_URL,
 'style' => SOAP_RPC,
 'use' => SOAP_ENCODED,
 'trace' => 1,
 );

 $client = new nusoap_client('http://demo.arzoo.com/ArzooWS/services/DOMFlightAvailability?wsdl', $clientinfo);
//print_r($client);
$result = $client->call('getAvailability', array($Request));
echo"<pre>";
print_r($result);
$clientInfo =simplexml_load_string(utf8_encode($result));
$flight = $clientInfo->Response__Depart->OriginDestinationOptions->OriginDestinationOption;
$error =$clientInfo->error__tag;
//echo $error;
var_dump($flight);
//exit;
//echo"<pre>";
//print_r($result);
//ECHO $error;
?>
Response\uu Depart->OriginDestinationOptions->OriginDestinationOption;
$error=$clientInfo->error\u标记;
//echo$错误;
var_dump($航班);
//退出;
//回声“;
//打印(结果);
//ECHO$错误;
?>

此文档是否公开提供?你能提供它的链接吗?@Root那么,你提供了正确的Clientid/Clientpassword/Clienttype了吗?还有一个问题,我如何从响应中获得每个值。现在我变得越来越大了data@Root您可以这样做来查看可读数据:
echo”“;打印(价值);回声“我已经完成了,但我看不到其中任何标记名只包含数据。@Root您能发布一个
$values
响应的示例吗?你对这个反应有何反应?用它创建一个HTML表?这并没有回答这个问题。
<wsdl:message name="getAvailabilityRequest">
    <wsdl:part name="in0" type="xsd:string"></wsdl:part>
</wsdl:message>
    <?php
  ini_set('max_execution_time','180');
    include 'lib/nusoap.php';
   $location_URL ='http://avail.flight.arzoo.com';
   $action_URL ='http://demo.arzoo.com/ArzooWS/services/DOMFlightAvailability?wsdl';
$Request = '<Request>
<Origin>BOM</Origin>
<Destination>DEL</Destination>
<DepartDate>2017-02-02</DepartDate>
<ReturnDate>2017-02-02</ReturnDate>
<AdultPax>1</AdultPax>
<ChildPax>0</ChildPax>
<InfantPax>0</InfantPax>
<Currency>INR</Currency>
<Clientid>Given by Arzoo.com</Clientid>
<Clientpassword>Given by Arzoo.com</Clientpassword>
<Clienttype>ArzooFWS1.1</Clienttype>
<Preferredclass>E</Preferredclass>
<mode>ONE</mode>
<PreferredAirline>AI</PreferredAirline>
</Request>';

$clientinfo = array('soap_version'=>SOAP_1_1,
'location' =>$location_URL,
'uri' =>$action_URL,
 'style' => SOAP_RPC,
 'use' => SOAP_ENCODED,
 'trace' => 1,
 );

 $client = new nusoap_client('http://demo.arzoo.com/ArzooWS/services/DOMFlightAvailability?wsdl', $clientinfo);
//print_r($client);
$result = $client->call('getAvailability', array($Request));
echo"<pre>";
print_r($result);
$clientInfo =simplexml_load_string(utf8_encode($result));
$flight = $clientInfo->Response__Depart->OriginDestinationOptions->OriginDestinationOption;
$error =$clientInfo->error__tag;
//echo $error;
var_dump($flight);
//exit;
//echo"<pre>";
//print_r($result);
//ECHO $error;
?>