我正在 android 制作一个注册页面
I am making a registration page in android
我正在 android 中制作注册页面,使用 php 、 mysql n json...
我的应用程序在我点击 .execute() 的那一刻崩溃了……有人能给我一个解决方案吗……我知道我做错了什么……我正在从服务器收到响应……我已经测试过了它...
public class Signup extends Activity{
private EditText et1,et2,et3,et4,et5;
private Button bt1,bt2;
ProgressDialog dialog;
JSONParser jsonParser = new JSONParser();
private static String url ="http://raictronics.com/script/register.php";
private static String TAG1= "success", TAG2="message";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
et1 =(EditText) findViewById(R.id.etv_username);
et2 =(EditText) findViewById(R.id.etv_password);
et3 =(EditText) findViewById(R.id.etv_retypepassword);
et4 =(EditText) findViewById(R.id.etv_name);
et5 =(EditText) findViewById(R.id.etv_mobile);
bt1 = (Button) findViewById(R.id.back_mainmenu);
bt2 = (Button) findViewById(R.id.confirm_signup);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent i = new Intent(Signup.this, Login.class);
startActivity(i);
finish();
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new JSONsignup().execute();
}
});
}
class JSONsignup extends AsyncTask<String, String, String>
{
int success;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = new ProgressDialog(Signup.this);
dialog.setMessage("Creating User...");
dialog.setIndeterminate(false);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected String doInBackground(String... params) {
String i1= et1.getText().toString();
String i2= et2.getText().toString();
String i3= et3.getText().toString();
String i4= et4.getText().toString();
String i5= et5.getText().toString();
try{
List<NameValuePair> params1 = new ArrayList<NameValuePair>();
params1.add(new BasicNameValuePair("username", i1));
params1.add(new BasicNameValuePair("password", i2));
params1.add(new BasicNameValuePair("password2", i3));
params1.add(new BasicNameValuePair("name", i4));
params1.add(new BasicNameValuePair("mobile", i5));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(url, "POST", params1);
Log.d("Login attempt", json.toString());
success = json.getInt(TAG1);
if(success == 1)
{
Log.d("User Created!", json.toString());
finish();
return json.getString(TAG2);
}
else{
Log.d("Login Failure!", json.getString(TAG2));
return json.getString(TAG2);
}
}
catch(JSONException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String file_url) {
// TODO Auto-generated method stub
dialog.dismiss();
if(file_url != null)
{
Toast.makeText(getApplicationContext(), file_url, Toast.LENGTH_SHORT).show();
}
}
}
}
而不是使用 getApplicationContext() 使用 Signup.this
您可以像这样将应用程序上下文传递到 AsyncTask class
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new JSONSignup(Signup.this).execute();
}
});
然后像这样编辑您的 JSONSignup AsyncTask class:
class JSONSignup extends AsyncTask<Void, Void, Void>
{
Context context;
ProgressDialog pDialog;
JSONSignup(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(context);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
...
这是服务器端的错误。
当您从 json 解析器 class 中的 post 方法发出 http 请求时,return 值需要是一个 json 对象,这不是实际上。
你能为你的 URL 投保吗?
private static String url ="http://raictronics.com/script/register.php";
上面的URL无法访问,我在浏览器中测试过。
确保您的 php 脚本正常工作并且可以从客户端访问。
我正在 android 中制作注册页面,使用 php 、 mysql n json... 我的应用程序在我点击 .execute() 的那一刻崩溃了……有人能给我一个解决方案吗……我知道我做错了什么……我正在从服务器收到响应……我已经测试过了它...
public class Signup extends Activity{
private EditText et1,et2,et3,et4,et5;
private Button bt1,bt2;
ProgressDialog dialog;
JSONParser jsonParser = new JSONParser();
private static String url ="http://raictronics.com/script/register.php";
private static String TAG1= "success", TAG2="message";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
et1 =(EditText) findViewById(R.id.etv_username);
et2 =(EditText) findViewById(R.id.etv_password);
et3 =(EditText) findViewById(R.id.etv_retypepassword);
et4 =(EditText) findViewById(R.id.etv_name);
et5 =(EditText) findViewById(R.id.etv_mobile);
bt1 = (Button) findViewById(R.id.back_mainmenu);
bt2 = (Button) findViewById(R.id.confirm_signup);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent i = new Intent(Signup.this, Login.class);
startActivity(i);
finish();
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new JSONsignup().execute();
}
});
}
class JSONsignup extends AsyncTask<String, String, String>
{
int success;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = new ProgressDialog(Signup.this);
dialog.setMessage("Creating User...");
dialog.setIndeterminate(false);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected String doInBackground(String... params) {
String i1= et1.getText().toString();
String i2= et2.getText().toString();
String i3= et3.getText().toString();
String i4= et4.getText().toString();
String i5= et5.getText().toString();
try{
List<NameValuePair> params1 = new ArrayList<NameValuePair>();
params1.add(new BasicNameValuePair("username", i1));
params1.add(new BasicNameValuePair("password", i2));
params1.add(new BasicNameValuePair("password2", i3));
params1.add(new BasicNameValuePair("name", i4));
params1.add(new BasicNameValuePair("mobile", i5));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(url, "POST", params1);
Log.d("Login attempt", json.toString());
success = json.getInt(TAG1);
if(success == 1)
{
Log.d("User Created!", json.toString());
finish();
return json.getString(TAG2);
}
else{
Log.d("Login Failure!", json.getString(TAG2));
return json.getString(TAG2);
}
}
catch(JSONException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String file_url) {
// TODO Auto-generated method stub
dialog.dismiss();
if(file_url != null)
{
Toast.makeText(getApplicationContext(), file_url, Toast.LENGTH_SHORT).show();
}
}
}
}
而不是使用 getApplicationContext() 使用 Signup.this
您可以像这样将应用程序上下文传递到 AsyncTask class
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new JSONSignup(Signup.this).execute();
}
});
然后像这样编辑您的 JSONSignup AsyncTask class:
class JSONSignup extends AsyncTask<Void, Void, Void>
{
Context context;
ProgressDialog pDialog;
JSONSignup(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(context);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
...
这是服务器端的错误。 当您从 json 解析器 class 中的 post 方法发出 http 请求时,return 值需要是一个 json 对象,这不是实际上。 你能为你的 URL 投保吗?
private static String url ="http://raictronics.com/script/register.php";
上面的URL无法访问,我在浏览器中测试过。 确保您的 php 脚本正常工作并且可以从客户端访问。