С этим кодом:
$client = new \SoapClient(
'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL',
array(
// Stuff for development.
'trace' => 1,
'exceptions' => true,
'cache_wsdl' => WSDL_CACHE_NONE
)
);
$data['nCdServico'] = '04510';
$data['sCepOrigem'] = '14400500';
$data['sCepDestino'] = '14400500';
$data['nVlPeso'] = '1';
$data['nCdFormato'] = 1;
$data['nVlComprimento'] = 17;
$data['nVlAltura'] = 17;
$data['nVlLargura'] = 17;
$data['nVlDiametro'] = 17;
$data['nVlValorDeclarado'] = 0;
$response = $client->CalcPrecoPrazo($data);
Я использую внешний веб-сервис, и он отправляет мне неожиданную ошибку: «объект не установлен в качестве экземпляра объекта» при заполнении запроса. Очевидно, что-то не так с моим кодом, потому что когда я использую SoapUI, он работает. Если удалить $ data ['nVlLargura'], он жалуется, что nVLLargura отсутствует, поэтому я думаю, что он получает параметры. У меня нет большого опыта работы с веб-сервисами и XML в этом отношении.
Когда я отправляю этот xml с помощью SoapUI, он работает:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:CalcPrecoPrazo>
<!--Optional:-->
<tem:nCdEmpresa>?</tem:nCdEmpresa>
<!--Optional:-->
<tem:sDsSenha>?</tem:sDsSenha>
<!--Optional:-->
<tem:nCdServico>40010</tem:nCdServico>
<!--Optional:-->
<tem:sCepOrigem>14400459</tem:sCepOrigem>
<!--Optional:-->
<tem:sCepDestino>14400500</tem:sCepDestino>
<!--Optional:-->
<tem:nVlPeso>2</tem:nVlPeso>
<tem:nCdFormato>1</tem:nCdFormato>
<tem:nVlComprimento>17</tem:nVlComprimento>
<tem:nVlAltura>17</tem:nVlAltura>
<tem:nVlLargura>17</tem:nVlLargura>
<tem:nVlDiametro>0</tem:nVlDiametro>
<!--Optional:-->
<tem:sCdMaoPropria>?</tem:sCdMaoPropria>
<tem:nVlValorDeclarado>0</tem:nVlValorDeclarado>
<!--Optional:-->
<tem:sCdAvisoRecebimento></tem:sCdAvisoRecebimento>
</tem:CalcPrecoPrazo>
</soapenv:Body>
</soapenv:Envelope>