繁体   English   中英

Soap 请求在 SoapUI 中有效,但在 Wordpress 插件中无效

[英]Soap request working in SoapUI but not in Wordpress plugin

我一直在寻找解决我的问题的方法,但无济于事。 我正在尝试使用以下内容通过 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 标记的使用。 这两个应该没有关系吧? 我真的很感谢你在这方面的帮助,因为我多年来一直在挠头。

先感谢您!

您只需要设置 UTC 时区和秘密格式,如下所示:

base64 encoded(sha1(Nonce . Created . Secret))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM