我正在开发一个Android应用程序,它使用PHP / MySQL将数据从app发送到服务器以注册/登录用户。我已经编写了Javascript和PHP文件来发送和接收JSON数据并将其插入MySQL数据库。我遇到的问题是如何处理PHP的不同响应。
例:
<?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应用程序内的用户进行交互。
答案 0 :(得分: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();
答案 1 :(得分:1)
您可以通过创建一个关联数组并将其传递给json_encode()
来制作一个json响应,它将返回一个可以回显给java客户端的字符串。不要忘记使用appropriate Content-Type
header功能设置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客户端上解析此响应。