Php Android/JSON:JSON响应为false?
我目前正在创建一个Php Android/JSON:JSON响应为false?,php,android,mysql,json,Php,Android,Mysql,Json,我目前正在创建一个Android应用程序,该应用程序链接到上的PHPMyAdminMYSQL数据库 Hosting24.com,此活动旨在允许用户注册,以便在将输入MYSQL数据库的应用程序的编辑文本框中输入详细信息 我正在尝试运行的代码给出了一个Toast输出: “抱歉,用户名已被选择。请选择另一个。”即使数据库完全为空 这似乎是因为JSON响应是false,我的查询是为什么这会是false 这是否意味着PHP脚本中的访问详细信息不正确 Android代码: public class Sign
Android应用程序
,该应用程序链接到上的PHPMyAdmin
MYSQL
数据库
Hosting24.com,此活动旨在允许用户注册,以便在将输入MYSQL数据库的应用程序的编辑文本框中输入详细信息
我正在尝试运行的代码给出了一个Toast
输出:
“抱歉,用户名已被选择。请选择另一个。”
即使数据库完全为空
这似乎是因为JSON响应
是false,我的查询是为什么这会是false
这是否意味着PHP脚本中的访问详细信息
不正确
Android代码:
public class SignUp extends Activity {
EditText UserName, Password;
Button btnSignUp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up_screen);
UserName = (EditText) findViewById(R.id.euUserName);
Password = (EditText) findViewById(R.id.euPass);
Password.setTransformationMethod(PasswordTransformationMethod.getInstance());
btnSignUp = (Button) findViewById(R.id.btnSingUp);
btnSignUp.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// get The User name and Password to sign up with
String userName = UserName.getText().toString();
String password = Password.getText().toString();
// Url to login PHP script on server
String serverURL = "http://r999hosting.com/UserRegistrationService.php?username="
+ userName + "&password=" + password;
new LongOperation().execute(serverURL);
}
});
}
/**
* Contains logic related to communication with PHP script over server
*
* @author
*
*/
private class LongOperation extends AsyncTask<String, Void, Void> {
private final HttpClient Client = new DefaultHttpClient();
private String Content;
private String Error = null;
private ProgressDialog Dialog = new ProgressDialog(SignUp.this);
String data = "";
int sizeData = 0;
protected void onPreExecute() {
Dialog.setMessage("Please wait.. ");
Dialog.show();
}
// Call after onPreExecute method
protected Void doInBackground(String... urls) {
// make POST call to web server
BufferedReader reader = null;
try {
// Define URL where to send data
URL url = new URL(urls[0]);
// Send POST data request
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(
conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the server response
reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
// Append server response in string
sb.append(line + "");
}
// Append Server Response To Content String
Content = sb.toString();
} catch (Exception ex) {
Error = ex.getMessage();
} finally {
try {
reader.close();
}
catch (Exception ex) {
}
}
return null;
}
protected void onPostExecute(Void unused) {
// Close progress dialog
Dialog.dismiss();
if (Error != null) {
} else {
// Start Parse Response JSON Data
String OutputData = "";
JSONObject jsonResponse;
try {
// Creates a new JSONObject with name/value mappings from
// the JSON string
jsonResponse = new JSONObject(Content);
String result = jsonResponse.get("result").toString();
if (result.equals("true")) {
// inform user they have signed up successfully
Toast.makeText(SignUp.this,
"Congrats: Sign Up Successfull",
Toast.LENGTH_LONG).show();
Intent i = new Intent(SignUp.this,
LoginHome.class);
startActivity(i);
// inform user of error signing up
Toast.makeText(getApplicationContext(),
"Congrats: Sign Up Successfull",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(
SignUp.this,
"Sorry, Username already chosen. Please choose another. ",
Toast.LENGTH_LONG).show();
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}
公共类注册扩展了活动{
编辑文本用户名、密码;
按钮btnSignUp;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u sign\u up\u屏幕);
UserName=(EditText)findViewById(R.id.euUserName);
密码=(EditText)findViewById(R.id.euPass);
setTransformationMethod(PasswordTransformationMethod.getInstance());
btnSignUp=(按钮)findViewById(R.id.btnSingUp);
btnSignUp.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
//获取要注册的用户名和密码
字符串userName=userName.getText().toString();
字符串密码=password.getText().toString();
//服务器上登录PHP脚本的Url
字符串serverURL=”http://r999hosting.com/UserRegistrationService.php?username="
+用户名+“&password=“+password;
新建LongOperation().execute(服务器URL);
}
});
}
/**
*包含与通过服务器与PHP脚本通信相关的逻辑
*
*@作者
*
*/
私有类LongOperation扩展了异步任务{
私有最终HttpClient客户端=新的DefaultHttpClient();
私有字符串内容;
私有字符串错误=null;
private ProgressDialog=新建ProgressDialog(SignUp.this);
字符串数据=”;
int sizeData=0;
受保护的void onPreExecute(){
setMessage(“请稍候…”);
Dialog.show();
}
//在onPreExecute方法之后调用
受保护的Void doInBackground(字符串…URL){
//对web服务器进行POST调用
BufferedReader reader=null;
试一试{
//定义发送数据的URL
URL=新URL(URL[0]);
//发送POST数据请求
URLConnection conn=url.openConnection();
连接设置输出(真);
OutputStreamWriter wr=新的OutputStreamWriter(
conn.getOutputStream());
wr.写入(数据);
wr.flush();
//获取服务器响应
reader=新的BufferedReader(新的InputStreamReader(
conn.getInputStream());
StringBuilder sb=新的StringBuilder();
字符串行=null;
//读取服务器响应
而((line=reader.readLine())!=null){
//在字符串中追加服务器响应
sb.追加(第+行“);
}
//将服务器响应附加到内容字符串
Content=sb.toString();
}捕获(例外情况除外){
Error=ex.getMessage();
}最后{
试一试{
reader.close();
}
捕获(例外情况除外){
}
}
返回null;
}
受保护的void onPostExecute(未使用的void){
//关闭进度对话框
Dialog.dismise();
if(错误!=null){
}否则{
//启动解析响应JSON数据
字符串OutputData=“”;
JSONObject jsonResponse;
试一试{
//从中创建具有名称/值映射的新JSONObject
//JSON字符串
jsonResponse=新的JSONObject(内容);
String result=jsonResponse.get(“result”).toString();
if(result.equals(“true”)){
//通知用户他们已成功注册
Toast.makeText(SignUp.this,
“恭喜:注册成功”,
Toast.LENGTH_LONG).show();
意向i=新意向(注册本、,
LoginHome.class);
星触觉(i);
//通知用户注册时出错
Toast.makeText(getApplicationContext(),
“恭喜:注册成功”,
Toast.LENGTH_LONG).show();
}否则{
Toast.makeText(
注册,这个,
“抱歉,用户名已选择。请选择其他用户名。”,
Toast.LENGTH_LONG).show();
}
}
捕获(JSONException e){
e、 printStackTrace();
}
}
}
}
}
PHP脚本:(注意:出于安全原因未显示真实细节)
您将用户名
和密码
硬编码到URL中,这对于获取
是可以的,但对于发布
则不行;对于POST
请求,您需要发送
<?php
if(isset($_GET['username']) && isset($_GET['password']))
{
$mysql_host = " ";
$mysql_database = " ";
$mysql_user = " ";
$mysql_password = " ";
// Provide host ip, mysql user name, password
$con = mysql_connect($mysql_host,$mysql_user,$mysql_password);
// Provide database name.
mysql_select_db($mysql_database);
$username=$_GET['username'];
$password=$_GET['password'];
$flag="false";
if(!empty($username) && !empty($password))
{
$sql="Insert into `Login` (`UserName`,`Password`) values ('$username','$password') ";
$result=mysql_query($sql);
if($result)
{
$count= mysql_affected_rows();
if($count > 0)
{
$flag="true"; //result true
}
}
mysql_close($con);
echo json_encode(array("result"=>$flag));
}
}
?>
// Url to login PHP script on server
String serverURL = "http://r999hosting.com/UserRegistrationService.php"
String query = "username=" + userName + "&password=" + password;
new LongOperation().execute(serverURL, query);
protected Void doInBackground(String... urls) {
data = urls[1]
...