最近做个酒店的项目,需要用soap获取酒店的数据信息,在被甲方坑了三次后,终于拿到了数据,做个记录,以便以后查看;
获取时用了nusoap类库,关闭了PHP自带的soap扩展,据说有冲突?未验证;
<?php
// 各类方法
class func{
private $client;
// 初始化
function __construct()
{
// nusoap类库
$client = new nusoap_client ("http://xxxxxxxxxxxxxx/services/CrsService?wsdl", 'wsdl' );
$err = $client->getError ();
if ($err) {return 0;}
$client->useHTTPPersistentConnection ();
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';
$client->setHeaders ( '<AuthenticationToken><Username>' . USER . '</Username><Password>' . PSWD . '</Password></AuthenticationToken>' );
$this -> client = $client;
}
// 获取城市酒店列表方法
public function getHotelList($cityCode)
{
$params = '<getHotelList xmlns="">';
$params = $params.'<city>'.$cityCode.'</city>';
$params = $params.'</getHotelList>';
return $this -> call('getHotelList',$params);
}
// 获取通用代码方法
public function getDcPublic($category)
{
$params = '<getDcPublic xmlns="">';
$params = $params.'<category>'.$category.'</category>';
$params = $params.'</getDcPublic>';
return $this -> call('getDcPublic',$params);
}
// 调用call 获取信息
private function call($way,$params)
{
$result = $this -> client -> call($way,$params);
return $result;
}
}