未定義メソッド GuzzleHttp\Command\Result::getBody() の呼び出し
P粉426780515
P粉426780515 2023-08-29 22:08:59
0
1
443

Drupal の外部 API から JSON 形式で応答を取得しようとしています。 HTTP クライアント マネージャー Drupal モジュールを使用しています。 現在、配列内の stdClass オブジェクト形式でのみ応答を取得でき、すべての応答キー値が失われます。

私の元のコード:

public function findPosts() { $client = $this->getClient(); $params = array('client_Id' => "12345", "client_Secret" => "42452454", "スコープ" => "読み取り"); $response = $client->FindPosts($params); dpm($response); return ['#markup' => $response]; }

以下のコードを出力します。 [access_token] => eyJhbGciOiJIUzUxMiIsIn、[type] => bearer などのようにする必要もあります。

stdClass オブジェクト ( [__CLASS__] => GuzzleHttp\Command\Result [データ:保護されている] => 配列 ( [0] =>eyJhbGciOiJIUzUxMiIsIn [1] => ベアラー [2] => 3600 [3] => 2022-11-09T10:48:47 00:00 [4] => 読む [5] => MwA1ADkaZAA0AGIAZAA4AC0AOQAzADcA [6] => 86400 [7] => 2022-11-10T09:48:47 00:00 ) )

$response->getBody() または $response->getContent() またはその他の応答メソッドを試行すると、次のエラーが返されます。

エラー: Drupal\http_client_manager_example\Controller\ExampleController->findPosts() の未定義メソッド GuzzleHttp\Command\Result::getBody() の呼び出し (92 行目) modules/contrib/http_client_manager/modules/http_client_manager_example/src/Controller/ExampleController.php) の。 Drupal\http_client_manager_example\Controller\ExampleController->findPosts() call_user_func_array(配列, 配列) (行: 123) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (行: 564) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (行: 124) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (行: 97) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (行: 169) Symfony\Component\HttpKernel\HttpKernel->handleRaw(オブジェクト, 1) (行: 81) Symfony\Component\HttpKernel\HttpKernel->ハンドル(オブジェクト, 1, 1) (行: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (行: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (行: 106) Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (行: 85) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (行: 49) Asm89\Stack\Cors->ハンドル(オブジェクト, 1, 1) (行: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (行: 38) Drupal\webprofiler\StackMiddleware\WebprofilerMiddleware->ハンドル(オブジェクト, 1, 1) (行: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (行: 23) Stack\StackedHttpKernel->ハンドル(オブジェクト, 1, 1) (行: 709) Drupal\Core\DrupalKernel->handle(Object) (行: 19)<
      

P粉426780515
P粉426780515

全員に返信 (1)
P粉231079976

@bwaindwainが述べたように、toArray()メソッドはgetBody()の代わりに機能します。

toArray()このメソッドは、次の形式の応答を処理します:

リーリー

ただし、この応答形式では、依然としてすべてのキーが表示されません:

リーリー

この問題に対する私の解決策は、responseModelsrc/api/resources/posts.jsonに次のように手動で追加することでした。 リーリー

より良い解決策を知っている人がいたら、コメントを残してください。

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!