我试图在我们的应用程序中使用SOAP API,但是我尝试了很多事情,并且正文请求始终为空。
这是我的实际代码。
$api_params = new stdClass();
$api_params->contractNumber = "********";
$api_params->password = "********";
$output_format = new stdClass();
$output_format->x = 0;
$output_format->y = 0;
$output_format->outputPrintingType = "PDF_10x15_300dpi";
$api_params->outputFormat = new stdClass();
$api_params->outputFormat = $output_format;
$api_params->letter = new stdClass();
$service = new stdClass();
$service->productCode = "DOM";
$service->orderNumber = $order_id;
$service->commercialName = TEXT_SENDER_NAME;
$api_params->letter->service = new stdClass();
$api_params->letter->service = $service;
$parcel = new stdClass();
$parcel->weight = $weight;
$api_params->letter->parcel = new stdClass();
$api_params->letter->parcel = $parcel;
$sender = new stdClass();
$sender = $this->get_sender();
$api_params->letter->sender = new stdClass();
$api_params->letter->sender->senderParcelRef = randomise_order_num($order_id);
$api_params->letter->sender->address = new stdClass();
$api_params->letter->sender->address = $sender;
$addressee = new stdClass();
$addressee = $this->get_addressee($order_id);
$api_params->letter->addressee = new stdClass();
$api_params->letter->addressee = $addressee;
$api_struct = new soapVar($api_params, SOAP_ENC_OBJECT);
$wsdl = "https://ws.colissimo.fr/sls-ws/SlsServiceWS?wsdl";
$soap_client = new SoapClient($wsdl, array('trace' => true, 'exception' => false));
try {
$api_result = $soap_client->generateLabel(array($api_struct));
} catch(Exception $e) {
echo "====== REQUEST HEADERS =====" . PHP_EOL;
var_dump($soap_client->__getLastRequestHeaders());
echo "========= REQUEST ==========" . PHP_EOL;
var_dump(htmlentities($soap_client->__getLastRequest()));
echo "========= RESPONSE =========" . PHP_EOL;
}
echo '<pre style="background:black; color:white; font-size:16px; font- weight:bold; direction:ltr!important; text-align:left;">';
print_r($api_struct);
echo '</pre>';
请求如下所示:
"<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://sls.ws.coliposte.fr"><SOAP-ENV:Body><ns1:generateLabel/></SOAP-ENV:Body></SOAP-ENV:Envelope>
和$array_struct
var dump:
SoapVar Object
(
[enc_type] => 301
[enc_value] => stdClass Object
(
[contractNumber] => XXXXXXX
[password] => XXXXXXX
[outputFormat] => stdClass Object
(
[x] => 0
[y] => 0
[outputPrintingType] => PDF_10x15_300dpi
)
[letter] => stdClass Object
(
[service] => stdClass Object
(
[productCode] => DOM
[orderNumber] => 52600
[commercialName] => TEXT_SENDER_NAME
)
[parcel] => stdClass Object
(
[weight] => 1
)
[sender] => stdClass Object
(
[senderParcelRef] => T01222345
[address] => stdClass Object
(
[companyName] => TEXT_SENDER_NAME
[line2] => TEXT_SENDER_ADDRESS
[countryCode] => TEXT_SENDER_COUNTRY_CODE
[city] => TEXT_SENDER_CITY
[zipCode] => TEXT_SENDER_ZIPCODE
[phoneNumber] => TEXT_SENDER_PHONE_NUMBER
)
)
[addressee] => stdClass Object
(
[address] => stdClass Object
(
[companyName] => ****
[firstName] => jc
[lastName] => ***
[line2] => ********
[countryCode] => FR
[city] => ***
[zipCode] => ***
[mobileNumber] => ******
[email] => *****
)
)
)
)
)
我已经尝试了很多东西(例如,有或没有soapVar)并挖掘了Stack Overflow和其他资源已有一段时间了,但是现在我真的开始挣扎了。
我找到了它,很抱歉,在我尝试两天的倍数期间,我在generateLabel调用中留下了数组,应该是:
$api_result = $soap_client->generateLabel($api_struct);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句