freeentr
Новичок
Приветствую!
Пытаюсь подключиться к сервису. Порядок примерно следующий; 1.Выполняется авторизация, 2.Делается запрос, 3.Получаем данные на основе введённых значений в шаге 2.
Привожу пример wsdl на сервере:
На основе этих объектов я сделал скрипт запроса, но не получается авторизироватся во время 2-го шага. Ниже в скрипте я два раза обращаюсь к серверу (__soapCall) - Первый Logins и второй Kasko_data. Logins проходит хорошо, а для Kasko_data похоже начинается новая сессия и соответственно авторизация не происходит (т.к. нет Logins в массиве пареметров).
Можно ли как-то реализовать это остоваясь в одной сессии?
Скрипт:
Благодарю!
Пытаюсь подключиться к сервису. Порядок примерно следующий; 1.Выполняется авторизация, 2.Делается запрос, 3.Получаем данные на основе введённых значений в шаге 2.
Привожу пример wsdl на сервере:
PHP:
<s:element name="Logins">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="loging"
type="tns:LoginInput" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="LoginInput">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="LoginsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="LoginsResult"
type="tns:LoginOutput" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="LoginOutput">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="loginresult"
type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="errormsg" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="Kasko_data">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="inf"
type="tns:InputKasko" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="InputKasko">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="regnum" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="regapl" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="Kasko_dataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Kasko_dataResult"
type="tns:OutputKasko" />
<s:element minOccurs="0" maxOccurs="1" name="AP_Active"
type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="AP_Errors"
type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="AP_Avail"
type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="CR_Errors"
type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="OutputKasko">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="atlpiem" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="persona" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string"
nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
Можно ли как-то реализовать это остоваясь в одной сессии?
Скрипт:
PHP:
public function calculate ($post, $begindate){
try{
$client = new SoapClient (URL, array(
'connection_timeout' => 10,
'timeout' => 10
));
$ServiceParameters = array(
'LoginInput' => array(
'loging' => array(
'login' => USER,
'password' =>PASSWORD
)
)
);
$serviceResult = $client->__soapCall ('Logins', $ServiceParameters);
if ($serviceResult->LoginsResult->loginresult == true){
$data = array(
'InputKasko' => array(
'inf' => array(
'regapl' => $post['prop_vehicle_license_regno'],
'regnum' => $post['prop_vehicle_licenseplate']
)
)
);
$kaskoResult = $client->__soapCall ('Kasko_data', $data);
return array(
'raw' => $kaskoResult
);
}
else{
return array(
'error' => $serviceResult->LoginsResult->errormsg
);
}
}
catch (SoapFault $e){
return array(
'error' => $e->getMessage (),
'code' => $e->getCode (),
'line' => $e->getLine ()
);
}
}