2017-01-24 3 views
2

Symfony 3プロジェクトの外部APIからHTTP GET要求を実行するのにGuzzleを使用しています。ここに私のコントローラのコードは次のとおりです。

<?php 

namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Request; 
use Psr\Http\Message\ResponseInterface; 
use GuzzleHttp\Client; 

class ScheduleController extends Controller { 

/** 
* @Route("/schedule") 
*/ 

public function getJobs() { 
    // Create a client with a base URI 
    $client = new \GuzzleHttp\Client(['base_uri' => 'http://my.external.api/']); 
    // Send a request to http://my.external.api/site/67/module/1449/item 
    $response = $client->request('GET', 'site/67/module/1449/item', ['auth' => ['****', '****']]); 
    var_dump($response); 
    exit; 
    return $this->json(array($response)); 
} 
} 

私は自分のコードから次var_dump($response)を取得しています:

object(GuzzleHttp\Psr7\Response)#397 (6) { ["reasonPhrase":"GuzzleHttp\Psr7\Response":private]=> string(2) "OK" ["statusCode":"GuzzleHttp\Psr7\Response":private]=> int(200) ["headers":"GuzzleHttp\Psr7\Response":private]=> array(11) { ["Date"]=> array(1) { [0]=> string(29) "Tue, 24 Jan 2017 19:39:17 GMT" } ["Server"]=> array(1) { [0]=> string(6) "Apache" } ["Cache-Control"]=> array(2) { [0]=> string(35) "no-cache, no-store, must-revalidate" [1]=> string(46) "no-cache, no-store, max-age=0, must-revalidate" } ["Pragma"]=> array(2) { [0]=> string(8) "no-cache" [1]=> string(8) "no-cache" } ["Expires"]=> array(2) { [0]=> string(1) "0" [1]=> string(1) "0" } ["X-Content-Type-Options"]=> array(1) { [0]=> string(7) "nosniff" } ["X-XSS-Protection"]=> array(1) { [0]=> string(13) "1; mode=block" } ["X-Frame-Options"]=> array(1) { [0]=> string(4) "DENY" } ["Set-Cookie"]=> array(1) { [0]=> string(64) "SiteIdentifier=67; Expires=Wed, 25-Jan-2017 19:39:17 GMT; Path=/" } ["Transfer-Encoding"]=> array(1) { [0]=> string(7) "chunked" } ["Content-Type"]=> array(1) { [0]=> string(30) "application/json;charset=UTF-8" } } ["headerNames":"GuzzleHttp\Psr7\Response":private]=> array(11) { ["date"]=> string(4) "Date" ["server"]=> string(6) "Server" ["cache-control"]=> string(13) "Cache-Control" ["pragma"]=> string(6) "Pragma" ["expires"]=> string(7) "Expires" ["x-content-type-options"]=> string(22) "X-Content-Type-Options" ["x-xss-protection"]=> string(16) "X-XSS-Protection" ["x-frame-options"]=> string(15) "X-Frame-Options" ["set-cookie"]=> string(10) "Set-Cookie" ["transfer-encoding"]=> string(17) "Transfer-Encoding" ["content-type"]=> string(12) "Content-Type" } ["protocol":"GuzzleHttp\Psr7\Response":private]=> string(3) "1.1" ["stream":"GuzzleHttp\Psr7\Response":private]=> object(GuzzleHttp\Psr7\Stream)#395 (7) { ["stream":"GuzzleHttp\Psr7\Stream":private]=> resource(328) of type (stream) ["size":"GuzzleHttp\Psr7\Stream":private]=> NULL ["seekable":"GuzzleHttp\Psr7\Stream":private]=> bool(true) ["readable":"GuzzleHttp\Psr7\Stream":private]=> bool(true) ["writable":"GuzzleHttp\Psr7\Stream":private]=> bool(true) ["uri":"GuzzleHttp\Psr7\Stream":private]=> string(10) "php://temp" ["customMetadata":"GuzzleHttp\Psr7\Stream":private]=> array(0) { } } }

私はPostmanを通じてHTTP GETを実行すると、私のような結果を得る:

"fields":[{"options":[{"id":23034,"value":"Ready for scheduling"}],"fieldDefinitionId":16444,"name":"Job Status"}

$responseとは現在私の外部APIから探しているコンテンツのJSON配列レスポンスを取得するにはどうすればよいですか?

+1

あなたはおそらく多くを得るだろう以前の質問に関する回答に返答する場合は、それ以上のものを提出する前に助けてください。 – Cerad

+0

@Ceradとは何ですか?私はその返事に混乱しています。 – Liz

+0

このサイトでは、質問をした後、答えに答えることは一般的に礼儀正しいと考えられています。あなたは昨日のおしゃべりに関する質問をしてから、その回答を無視しました。 – Cerad

答えて

1

を:

return $this->json(json_decode($response->getBody())); 
+0

これは私のために働いた。ありがとうございました。 – Liz

1

そのhomepageに示すように、応答body取得する:あなたがthe json controller helperを使用できるのSymfony 3.1のようあなたは、symfonyの応答を返さなければなりません

// 'application/json; charset=utf8' 
echo $response->getBody(); 
// {"type":"User"...' 

// to return from controller 
return json_decode($response->getBody()); 
+0

これは私にこのエラーを与えます: 'コントローラはレスポンスを返す必要があります(nullが指定されています)。あなたのコントローラのどこかにreturnステートメントを追加することを忘れましたか? 'この' $ response'をコントローラのreturnステートメントにどのようにエコーしますか? – Liz

+0

@LizBanach更新された回答 –

+0

リズ、この答えはあなたの質問ですか?もしそうなら、それを正解とマークできますか?あなたがコメントを追加できない場合は?ありがとう! –

関連する問題