Я пытаюсь вызвать некоторые методы из Magento API V.1, но когда я вызываю метод startSession
для получения sessionId, в результате я получаю null . Я использую Magento 1.5.1.0. Вот мой код (мне нужно сохранить файл WSDL локально перед созданием клиента SOAP из-за ошибки в PHP 5.3, связанной с большими файлами WSDL.):
// Create a SOAP client
$data = file_get_contents("http://127.0.0.1/magento/index.php/api/soap/?wsdl");
file_put_contents("wsdl.xml", $data);
$proxy = new SoapClient("wsdl.xml");
// Log-in to the magento API
$sessionId = $proxy -> login('apiUser', 'apiKey');
Это полный запрос POST, отправленный в Magento:
POST /magento/index.php/api/soap/index/ HTTP/1.1
Host: localhost:8070
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.0
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:Mage_Api_Model_Server_HandlerAction"
Content-Length: 383
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:startSession/>
</SOAP-ENV:Body>
И это (пустой) POST-ответ, полученный от Magento:
HTTP/1.1 302 Found
Date: Fri, 07 Oct 2011 14:57:01 GMT
Server: Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.3.0
X-Powered-By: PHP/5.3.0
Location: http://127.0.0.1/magento/
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
Кто-нибудь сталкивался с этим раньше? Мне кажется странным, что в возвращаемых данных я вообще не получаю SOAP-сообщения.
Спасибо:)
ОБНОВЛЕНИЕ: На данный момент я до сих пор не знаю причину этой проблемы, и я просто переключился на новую установку Magento на другой машине. Вроде там нормально работает.