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

时间:2017-11-15 21:59:34

标签: ibm-cloud-infrastructure

我正在尝试使用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();
?>

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

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肥皂客户端。

1 个答案:

答案 0 :(得分:0)

对我来说,你的请求使用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