Запрос SOAP работает в SoapUI, но не в плагине Wordpress - PullRequest
0 голосов
/ 09 февраля 2019

Я искал решение моей проблемы, но безрезультатно.Я пытаюсь отправить запрос на мыло через плагин Wordpress, используя следующее:

function soapRequest($soapUsername, $soapNonce, $soapDateTime, $soapPassword) {

$wsdl = 'http://www.beautyfort.com/api/wsdl/v2/wsdl.wsdl';
$trace = true;
$exceptions = false;

$client = new SoapClient($wsdl, array('trace' => $trace, 'exceptions' => $exceptions));

// Must be a stdClass (and not an array)
$auth = new stdClass();
$auth->Username = $soapUsername;
$auth->Nonce = $soapNonce;
$auth->Created = $soapDateTime;
$auth->Password = $soapPassword;

$header = new SoapHeader('http://www.beautyfort.com/api/', 'AuthHeader', $auth);

$client->__setSoapHeaders($header);

$xml_array['TestMode'] = 'true';
$xml_array['StockFileFormat'] = 'JSON';
$xml_array['SortBy'] = 'StockCode';

try {
    $response = $client->GetStockFile($xml_array);
}

catch (Exception $e) {
    log_me("Error!");
    log_me($e -> getMessage());
    log_me('Last response: '. $client->__getLastResponse());
}

log_me('Last request: '. $client->__getLastRequest());
log_me($response);
}

Это приводит к следующему запросу:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1="http://www.beautyfort.com/api/">
    <SOAP-ENV:Header>
        <ns1:AuthHeader>
            <ns1:Username>joetest</ns1:Username>
            <ns1:Nonce>htflFfIKM4</ns1:Nonce>
            <ns1:Created>2019-02-09T10:13:51.000Z</ns1:Created>
            <ns1:Password>NGFjYTJiNzJmOWY2MzBmY2M2MjJkNjg1MDgyMWRjMzQxOGY1YTNjYQ==</ns1:Password>
        </ns1:AuthHeader>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns1:GetStockFileRequest>
            <ns1:TestMode>true</ns1:TestMode>
            <ns1:StockFileFormat>JSON</ns1:StockFileFormat>
            <ns1:SortBy>StockCode</ns1:SortBy>
        </ns1:GetStockFileRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

И я получаю ошибку неверных учетных данных.Я также тестировал в SoupUI, и работает следующий запрос:

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:api="http://www.beautyfort.com/api/">
    <soapenv:Header>
        <api:AuthHeader>
            <api:Username>joetest</api:Username>
            <api:Nonce>tJrsRlQt6i</api:Nonce>
            <api:Created>2019-02-06T23:34:11.000Z</api:Created>
            <api:Password>ZTBhMmE5OGY4YTNlZWIzZTE0ZTc2ZjZiZDBhM2RhMjJmNzAxNzYwZA==</api:Password>
        </api:AuthHeader>
    </soapenv:Header>
    <soapenv:Body>
        <api:GetStockFileRequest>
            <api:TestMode>true</api:TestMode>
            <api:StockFileFormat>JSON</api:StockFileFormat>
            <!--Optional:-->
            <api:FieldDelimiter>,</api:FieldDelimiter>
            <!--Optional:-->
            <api:StockFileFields>
                <!--1 or more repetitions:-->
                <api:StockFileField>StockCode</api:StockFileField>
                <api:StockFileField>Category</api:StockFileField>
                <api:StockFileField>Brand</api:StockFileField>
                <api:StockFileField>Collection</api:StockFileField>
                <api:StockFileField>Category</api:StockFileField>
            </api:StockFileFields>
            <api:SortBy>StockCode</api:SortBy>
        </api:GetStockFileRequest>
    </soapenv:Body>
</soapenv:Envelope>

Теперь единственное отличие, которое я вижу (кроме необязательных полей), - это имена пространства имен и использование Xmlтег в верхней части запроса.И то и другое не должно иметь значения, верно?Я был бы очень признателен за вашу помощь в этом, так как я целую вечность чесал голову.

Заранее спасибо!

...