Softlayer API:在 nextInvoiceTopLevelBillingItems 掩码中使用 invoiceItem 时出错 - PHP

Softlayer API: Error using invoiceItem in nextInvoiceTopLevelBillingItems mask - PHP

我正在尝试使用 PHP 从计费项目中提取用户信息 - 就像在本例中一样:https://knowledgelayer.softlayer.com/procedure/how-extract-user-billing-information-using-softlayers-api

我的代码:

?php
require_once __DIR__.'/vendor/autoload.php';
.
.
.
$client = \SoftLayer\SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);

$mask = "mask[id,orderItem[id,order[userRecordId,userRecord[username]]],invoiceItem[id,totalRecurringAmount]]";
$client->setObjectMask($mask);
$userBill = $client->getNextInvoiceTopLevelBillingItems();
?>

但是,如果掩码中包含 invoiceItem,我会收到此错误。

PHP Fatal error:  Uncaught SoapFault exception: [SOAP-ENV:Server] Internal Error in /opt/devices/vendor/softlayer/softlayer-api-php-client/src/SoapClient.php:200
Stack trace:
#0 /opt/devices/vendor/softlayer/softlayer-api-php-client/src/SoapClient.php(200): SoapClient->__call('getNextInvoiceT...', Array, NULL, Array, Array)
#1 /opt/devices/invoiceProd3.php(17): SoftLayer\SoapClient->__call('getNextInvoiceT...', Array)
#2 /opt/devices/invoiceProd3.php(17): SoftLayer\SoapClient->getNextInvoiceTopLevelBillingItems()
#3 {main}
   thrown in /opt/devices/vendor/softlayer/softlayer-api-php-client/src/SoapClient.php on line 200

当掩码仅限于orderItem时,一切都很好。也就是说,这个面具很好用。

$mask = "mask[id,orderItem[id,order[userRecordId,userRecord[username]]]];

但是,invoiceItem 不走运。

   "mask[id,invoiceItem[id,totalRecurringAmount]]";

我正在使用 9/25/2015 soap 客户端。

对我来说,你的请求在使用 PHP 时工作正常,所以当你使用 API 并且请求正在获取时,问题很可能是你的请求返回了大量数据很多数据你可能会得到内部错误,就像你得到的那样。为了解决该问题,您有以下选择:

1.- 减少数据量,就像您减少 objectMask 或使用 objectFilters 一样 2.- 增加请求的超时时间,您可以在创建客户端时立即执行此操作,例如:

 $client = \SoftLayer\SoapClient::getClient($serviceName, null, $empUsername, $empPassword, $endPoint, array(
'trace' =>true,
'connection_timeout' => 500000000,
'keep_alive' => false,
));

3.- 使用分页(结果限制)以减少请求中的数据,您可以在此处查看如何执行此操作: https://sldn.softlayer.com/article/PHP