2016-06-26 1 views
0

私はログイン認証に取り組んでおり、失敗を特定することができません。 Via AJAX私はusernameとpasswordをlogin.phpに渡します。login.phpはPHP REST APIを呼び出して資格情報を確認し、アカウントステータスとUIにプッシュバックされたメッセージを含むJSONで応答します。問題をデバッグするPHP REST API file_get_contentsによって呼び出されました

私はfile_get_contentsを使用してAPIを呼び出しています。 apiURLはlocalhost/api/v1/loginです。

login.php

$data = array('username' => $username, 'password' => $password); 
    $options = ["http" => 
     ["method" => "POST", 
      "header" => "Content-Type: application/json", 
      "content" => json_encode($data) 
      ] 
     ]; 

    // Call API 
    $apiResponse = json_decode(file_get_contents($apiUrl, NULL, stream_context_create($options))); 

問題は私のAPI呼び出しのようですが、私は問題が何であるかを把握することはできません。

API

$response = array("status" => "active", "message" => "success"); 

      header('Content-Type: application/json'); 
      echo json_encode($response); 

私は郵便配達Chrome拡張機能を使用して、私のAPIをテストし、APIのコードが動作しているので、問題なくJSONを送受信します。 login.phpでvar_dump($apiResponse)を実行すると、APIから返された値としてNULLが返されます。

この値がNULLの理由についての考えはありますか? apiエンドポイントを間違って呼び出していますか?

+0

てみてください=> json_encode($ data) 'を' 'content" => http_build_query($ data) ' –

+0

に置き換えることを忘れないでください。私は問題を理解した。私はjson_decodeがJSONを配列に自動的に変換しないことに気づいていませんでした。私は連想配列としてapiResponseに対して操作していました。私がそれを真に設定したら、それは問題を解決しました。 – Runicode

答えて

0
$data = http_build_query(
    array('username' => $username, 'password' => $password) 
); 

$opts = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Content-type: application/x-www-form-urlencoded', 
     'content' => $data 
    ) 
); 

$apiResponse = json_decode(file_get_contents($apiUrl, false, stream_context_create($opts))); 

私はコード

refをテストしていないが、これはあなたを助けるかもしれない:php、代わりに `アプリケーション/の`アプリケーション/ X-WWW-フォームurlencoded`を使用するstackoverflow

関連する問題