为了账号安全,请及时绑定邮箱和手机立即绑定

SOAP WSDL 请求 - 方法返回错误的请求错误

SOAP WSDL 请求 - 方法返回错误的请求错误

PHP
PIPIONE 2022-08-05 16:10:57
我正在尝试进行肥皂调用,它返回“错误请求”错误。示例调用是:    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://centric.eu/services/CS/Trade/Standard/WS/" xmlns:cen="http://schemas.datacontract.org/2004/07/Centric.CS.Trade.Standard.WS.StockService.Contract.Request"><soapenv:Header>    <ws:Security soapenv:mustUnderstand="1" xmlns:ws="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">        <ws:UsernameToken>            <ws:Username>username</ws:Username>            <ws:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass</ws:Password>         </ws:UsernameToken>    </ws:Security></soapenv:Header>   <soapenv:Body>      <ws:GetStock>         <ws:request>            <cen:StockRequests>               <!--Zero or more repetitions:-->               <cen:StockRequest>                  <cen:CustomerNo>123</cen:CustomerNo>                  <cen:Division>AGU_NL</cen:Division>                  <cen:Item>113504</cen:Item>                  <cen:Language>NL</cen:Language>                  <cen:Login>123</cen:Login>               </cen:StockRequest>            </cen:StockRequests>         </ws:request>      </ws:GetStock>   </soapenv:Body></soapenv:Envelope>我使用以下代码:$soapclient = new \SoapClient($url, array(            'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 9,            'trace' => true,            'exceptions' => 1,            'cache_wsdl' => 1,        ));我得到的响应是:错误代码:HTTP,错误字符串:错误请求 我不完全确定我是否创建了请求并正确调用了方法。任何帮助将不胜感激
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

最好不要尝试手动构造 xml。请尝试以下操作:


$url = 'https://webservices.abcb2b.eu/Centric/CS/Trade/csprod/StockService.svc?wsdl';

$username = 'username';

$password = 'pass';

$client = new SoapClient($url, array('trace' => 1, "exception" => 0));


$wssNamespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";

$usernameToken = new SoapVar(array(

    new SoapVar(array(

        new SoapVar($username, XSD_STRING, null, null, 'Username', $wssNamespace),

        new SoapVar($password, XSD_STRING, null, null, 'Password', $wssNamespace)

    ), SOAP_ENC_OBJECT, null, null, 'UsernameToken', $wssNamespace)

), SOAP_ENC_OBJECT, null, null, null, $wssNamespace);

$client->__setSoapHeaders(new SoapHeader($wssNamespace, 'Security', $usernameToken));



try {

    $client->GetStock(array(

        'request' => array(

            'StockRequests' => array(

                'StockRequest' => array(

                    'CustomerNo' => 123,

                    'Division' => 'AGU_NL',

                    'Item' => '113504',

                    'Language' => 'NL',

                    'Login' => '123',

                )

            )

        )

    ));

} catch(\SoapFault $e) {

    echo '<pre>';

    print_r($e->getMessage());

    echo '</pre>';

}


查看完整回答
反对 回复 2022-08-05
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您收到错误请求的原因是因为您没有很好地格式化您的请求,请尝试在您的请求之间没有空格


查看完整回答
反对 回复 2022-08-05
  • 2 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信