【发布时间】:2020-08-31 00:33:14
【问题描述】:
我在我的 laravel 6.x 应用程序中使用 Guzzle 来调用外部端点。然后,如果响应状态为 200,我将尝试使用此代码访问响应属性
<?php
namespace App\Http\Controllers\API;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Log;
class AccountController extends Controller
{
public function createdDedicatedAccount()
{
$client = new Client(['verify' => false]);
$secretKey = 'some_secret_key';
$url = 'target_url';
$headers = [
'Authorization' => 'Bearer ' . $secretKey,
'content-type' => 'application/json',
];
Log::info('Requesting dedicated account assignment to customer: ' . 24101696);
$response = $client->request('POST', $url, [
'headers' => $headers,
'json' => ['customer' => 24101696]
]);
if ($response->getStatusCode() === 200) {
Log::info('Dedicated account assigned.');
$dedicatedAccount = json_decode($response->getBody());
Log::info('dedicatedAccount: ' . $dedicatedAccount);
Log::info('account_number: ' . $dedicatedAccount->data->account_number);
}
}
但是当我尝试访问该属性时,我得到了这个异常错误
stdClass 类的对象无法转换为字符串
这是记录的内容
[2020-05-14 13:01:17] local.INFO: Customer created successfully with id: 24101696
[2020-05-14 13:01:17] local.INFO: Requesting dedicated account assignment to customer: 24101696
[2020-05-14 13:01:18] local.INFO: Dedicated account assigned.
[2020-05-14 13:01:18] local.ERROR: Object of class stdClass could not be converted to string
如果我不json_decoderesponse->getBody(),我可以像这样成功登录dedicatedAccount
[2020-05-14 13:47:35] local.INFO: Customer created successfully on with id: 24103237
[2020-05-14 13:47:35] local.INFO: Requesting dedicated account assignment to customer: 24103237
[2020-05-14 13:47:37] local.INFO: Dedicated account assigned.
[2020-05-14 13:47:37] local.INFO: dedicated_account: {
"status": true,
"message": "Account successfully created",
"data": {
"bank": {
"name": "Test Bank",
"id": 25,
"slug": "test-bank"
},
"account_name": "TEST TEST",
"account_number": "9930892996",
"assigned": true,
"currency": "NGN",
"metadata": null,
"active": true,
"id": 89505,
"created_at": "2020-03-30T10:13:13.000Z",
"updated_at": "2020-05-14T12:47:38.000Z",
"assignment": {
"integration": 103612,
"assignee_id": 24103237,
"assignee_type": "Customer",
"expired": false,
"account_type": "PAY-WITH-TRANSFER-RECURRING",
"assigned_at": "2020-05-14T12:47:38.588Z",
"expired_at": null
},
"customer": {
"id": 24103237,
"first_name": "Test",
"last_name": "Test",
"email": "5_test@test.co",
"customer_code": "CUS_ofuz99njymux0g9",
"phone": null,
"metadata": null,
"risk_action": "default"
}
}
}
[2020-05-14 13:47:37] local.ERROR: Undefined property: GuzzleHttp\Psr7\Stream::$data
但最终还是会出现另一个异常错误消息。
处理我得到的响应以便我可以访问对象的属性的正确方法是什么?
【问题讨论】:
标签: php json laravel guzzle laravel-6