我正在尝试使用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肥皂客户端。
答案 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