2012-05-11 15 views
3

PHP/MySQLを使用してアプリケーションをサーバーに送信してユーザーを登録/ログインするアンドロイドアプリケーションを開発しています。私は既にJavascriptとPHPファイルを書いてJSONデータをMySQLデータベースに挿入して送信しました。私が持っている問題は、PHPからのさまざまな応答を処理する方法です。javascript http投稿要求後に別のPHPレスポンスを処理する

Exemple:

<?php 

    //decode json object 
    $json = file_get_contents('php://input'); 
    $obj = json_decode($json); 

    //variables 
    $user_firstname = $obj->{'user_firstname'}; 
    $user_lastname = $obj->{'user_lastname'}; 
    $user_email = $obj->{'user_email'}; 
    $user_password = $obj->{'user_password'}; 

    if([variables] != null){ 
     //check for an existing email in db 
     mysql_query("Check if email exists"); 

     if(email exist){ 
     //pass a response to java file 
     return user_exists; 
     die(); 
     }else{ 
     //success 
     return success; 
     } 
    } 

?> 

私が欲しいのは、Androidアプリ内のユーザーと対話するために、これらの異なる戻り値を処理することです。

答えて

1

連想配列を作成し、それをjson_encode()に渡すことで、Javaクライアントにエコーすることができる文字列を返すことができます。 header()機能を使用してappropriate Content-Type headerを設定することを忘れないでください。また、HTTP応答コードを適切に設定することもお勧めします。私はこのような何かを描いています:

$responseArray = array('response' => 'success'); // or 'user_exists' 
$responseJson = json_encode($responseArray); 
header('HTTP/1.1 200 OK'); // or 4xx FAIL_TEXT on failure 
header('Content-Type: application/json'); 
echo $responseJson; 

あなたは、この応答をJavaクライアントで解析する必要があります。

2

私はこのためにHTTPレスポンスコードを使用するべきだと思います。たとえば、あなたのPHPスクリプトは、ユーザが正常に作成されたときにはHTTP 200 - OKを返し、ユーザがすでに存在するときにはHTTP 409 Conflictを返します。これは、RESTfull APIが通常これをどのように動作させるかです。 Androidでは、ステータスコードを確認して何をすべきかを判断する必要があります。

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost httpget = new HttpPost("http://www.google.com/"); 

HttpResponse response = httpclient.execute(httpget); 
int statusCode = response.getStatusLine().getStatusCode(); 
+0

+1 http応答コードについての良い点。 – Asaph

関連する問題