2017-07-02 22 views
0

私がしようとしているのは、外部APIにログインしてJSONファイルを取得することです。このため私はLaravelのGuzzleを使用しています。私はAPIにログインするために必要なのですJSONファイルを取得するためにGuzzle Laravel - POSTリクエストを使用してログイン

$response = $client->request('GET', '/basicspacedata/query/class/boxscore'); 

:私は使用してJSONファイルにアクセス

$client = new Client([ 
     'base_uri' => 'https://www.space-track.org', 
     'timeout' => 2.0, 
    ]); 

私はセットアップにこれを行うためのコントローラを持っています。 APIチュートリアルでは次のように伝えています。

Login by sending a HTTP POST request ('identity=your_username&password=your_password') to: https://www.space-track.org/ajaxauth/login 

Guzzleを使用してAPIにログインすることはできません。私はいくつかのGuzzleチュートリアルに従ってみましたが、どれも成功していない 'auth'配列を使ってみました。

基本的に、私ができないことは、Guzzleを使用してAPIにログインすることです。ここで

+0

「$ client-> post( 'https://www.space-track.org/」のようなログインパラメータを投稿するだけではどうでしょうか? ajaxauth/login?identity = your_username&password = your_password ') 'を実行し、トークンなどを取得します。 – hasandz

答えて

1

は、それが1オフ要求ではないですし、あなたが広範囲にこのAPIを使用しての滑走している場合は、その独自のサービスクラスでは、この「醜さ」をラップすることができます今

// Initialize the client 
$api = new Client([ 
    'base_uri' => 'https://www.space-track.org', 
    'cookies' => true, // You have to have cookies turned on for this API to work 
]); 

// Login 
$api->post('ajaxauth/login', [ 
    'form_params' => [ 
     'identity' => '<username>', // use your actual username 
     'password' => '<password>', // use your actual password 
    ], 
]); 

// Fetch 
$response = $api->get('basicspacedata/query/class/boxscore/format/json'); 
// and decode some data 
$boxscore = json_decode($response->getBody()->getContents()); 

// And logout 
$api->get('ajaxauth/logout'); 

dd($boxscore); 

を動作するはずの基本的な流れであります

$spaceTrack = new App\Services\SpaceTrack\Client(); 
$boxscore = $spaceTrack->getBoxscore(); 
dd($boxscore); 
関連する問題