Метод входа в Magento API возвращает ноль - PullRequest
2 голосов
/ 06 октября 2011

Я пытаюсь вызвать некоторые методы из 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 на другой машине. Вроде там нормально работает.

1 Ответ

0 голосов
/ 16 августа 2012

Я не знаю, почему вы называете file_get_contents этим

$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");

изменить с этим:

$client = new SoapClient('http://magentohost/api/v2_soap?wsdl=1');

// If somestuff requires api authentification,
// then get a session token
$session = $client->login('apiUser', 'apiKey');

// If you don't need the session anymore
$client->endSession($session);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...