>  Q&A  >  본문

정의되지 않은 메서드 GuzzleHttp\Command\Result::getBody() 호출 중

<p>Drupal의 외부 API로부터 json 형식의 응답을 얻으려고 합니다. 저는 HTTP 클라이언트 관리자 Drupal 모듈을 사용하고 있습니다. 이제 배열에서는 stdClass 객체 형식의 응답만 얻을 수 있고 모든 응답 키 값은 손실됩니다. </p> <p>내 원래 코드: </p> <pre class="brush:php;toolbar:false;">공용 함수 findPosts() { $client = $this->getClient(); $params = array('client_Id' => "12345", "클라이언트_비밀" => "42452454", "범위" => "읽기"); $response = $client->FindPosts($params); dpm($응답); 반환 ['#markup' => }</pre> <p>다음 코드를 출력하세요. 또한 [access_token] => eyJhbGciOiJIUzUxMiIsIn, [type] => bearer 등처럼 보이도록 해야 합니다. </p> <pre class="brush:php;toolbar:false;">stdClass 객체 ( [__CLASS__] => GuzzleHttpCommandResult [데이터:보호됨] => 배열 ( [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 ) )</pre> <p>$response->getBody(), $response->getContent() 또는 기타 응답 메서드를 시도하면 다음 오류가 반환됩니다.</p> <pre class="brush:php;toolbar:false;">오류: Drupalhttp_client_manager_exampleControllerExampleController->findPosts()에서 정의되지 않은 메서드 GuzzleHttpCommandResult::getBody() 호출(modules/contrib/http_client_manager/modules/http_client_manager_example의 92번째 줄) /src/Controller/ExampleController.php). Drupalhttp_client_manager_exampleControllerExampleController->findPosts() call_user_func_array(Array, Array) (라인: 123) DrupalCoreEventSubscriberEarlyRenderingControllerWrapperSubscriber->DrupalCoreEventSubscriber{closure}() (라인: 564) DrupalCoreRenderRenderer->executeInRenderContext(Object, Object) (라인: 124) DrupalCoreEventSubscriberEarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (라인: 97) DrupalCoreEventSubscriberEarlyRenderingControllerWrapperSubscriber->DrupalCoreEventSubscriber{closure}() (라인: 169) SymfonyComponentHttpKernelHttpKernel->handleRaw(Object, 1) (라인: 81) SymfonyComponentHttpKernelHttpKernel->handle(Object, 1, 1) (라인: 58) DrupalCoreStackMiddlewareSession->handle(Object, 1, 1) (라인: 48) DrupalCoreStackMiddlewareKernelPreHandle->handle(Object, 1, 1) (라인: 106) Drupalpage_cacheStackMiddlewarePageCache->pass(Object, 1, 1) (라인: 85) Drupalpage_cacheStackMiddlewarePageCache->handle(Object, 1, 1) (라인: 49) Asm89StackCors->handle(Object, 1, 1) (라인: 48) DrupalCoreStackMiddlewareReverseProxyMiddleware->handle(Object, 1, 1) (라인: 38) DrupalwebprofilerStackMiddlewareWebprofilerMiddleware->handle(Object, 1, 1) (라인: 51) DrupalCoreStackMiddlewareNegotiationMiddleware->handle(Object, 1, 1) (라인: 23) StackStackedHttpKernel->handle(Object, 1, 1) (라인: 709) DrupalCoreDrupalKernel->handle(Object) (라인: 19)

P粉426780515P粉426780515387일 전480

모든 응답(1)나는 대답할 것이다

  • P粉231079976

    P粉2310799762023-08-30 18:59:05

    @bwaindwain이 언급 toArray() 方法代替 getBody() 작동합니다.

    toArray() 메서드는 다음 형식의 응답과 함께 작동합니다.

    으아악

    그러나 이 응답 형식을 사용하면 모든 키가 여전히 사라집니다.

    으아악

    이 문제에 대한 나의 해결책은 src/api/resources/posts.json 中手动添加 responseModel에 아래와 같습니다:

    으아악

    더 좋은 해결책을 아시는 분은 댓글 남겨주세요.

    회신하다
    0
  • 취소회신하다