Android 如何在onPostExecute()异步任务中获得响应
我最近开始在android上工作,现在我正在使用AsyncTask。下面的代码是如何从API中得到响应的。每个建议都是值得欣赏的Android 如何在onPostExecute()异步任务中获得响应,android,web-services,android-asynctask,Android,Web Services,Android Asynctask,我最近开始在android上工作,现在我正在使用AsyncTask。下面的代码是如何从API中得到响应的。每个建议都是值得欣赏的 class signmeup extends AsyncTask<String, String, String> { private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); @Override p
class signmeup extends AsyncTask<String, String, String> {
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(WolfActivity.this);
pDialog.setMessage("Loading");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("section","user"));
params.add(new BasicNameValuePair("action","new"));
params.add(new BasicNameValuePair("device_type","2"));
params.add(new BasicNameValuePair("device_token","dhdkhgkdfhgkhfdghkdfjhgkjdfhgkdfhkhkHKhdkhsdkhKJHKWJHDSKAHDKJSAHJKDfhkashfkdjhfkjhskjhKJHJk"));
params.add(new BasicNameValuePair("first_name",fname));
params.add(new BasicNameValuePair("last_name",lname));
params.add(new BasicNameValuePair("email",email));
params.add(new BasicNameValuePair("phone",phone));
params.add(new BasicNameValuePair("fax",fax));
params.add(new BasicNameValuePair("address",addr));
params.add(new BasicNameValuePair("address1",addr1));
params.add(new BasicNameValuePair("facility",facility));
params.add(new BasicNameValuePair("password",pwd));
params.add(new BasicNameValuePair("zip",zipcode));
params.add(new BasicNameValuePair("city",city));
params.add(new BasicNameValuePair("state",state));
params.add(new BasicNameValuePair("how_you_found",huf));
params.add(new BasicNameValuePair("how_you_found_value",hufv));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest("http://eastendwebsolutions.com/wf/ws/", "GET", params);
Log.d("First Name",fname);
Log.d("Last Name",lname);
Log.d("Email",email);
// check log cat for response
Log.d("Create Response", json.toString());
// check for success tag
try {
String success = json.getString("status");
String message = json.getString("message");
if(success == "0") {
Toast.makeText(WolfActivity.this,message ,Toast.LENGTH_LONG).show();
} else {
Toast.makeText(WolfActivity.this,"Error "+message ,Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@SuppressWarnings("deprecation")
//@Override
protected void onPostExecute(String Result) {
if(pDialog.isShowing()){
pDialog.dismiss();
}
Log.d("Result",Result);
AlertDialog.Builder builder=new AlertDialog.Builder(WolfActivity.this);
builder.setTitle("Info");
builder.setMessage("Successfully registered");
builder.setIcon(R.drawable.app_icon);
builder.create().show();
}
}
类注册扩展了异步任务{
私人对话;
JSONParser JSONParser=新的JSONParser();
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(WolfActivity.this);
pDialog.setMessage(“加载”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
//建筑参数
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“节”、“用户”);
参数添加(新的BasicNameValuePair(“操作”,“新”));
参数添加(新的BasicNameValuePair(“设备类型”,“2”));
参数添加(新的BasicNameValuePair(“设备令牌”,“DHDKHGKDFHGKHFDGHKDFJHGKJDFHGKDFHKHKHKHDKHSDKKHKKJKKWJHDKJSAHJKDFHKKHFKJKJKJJJJJK”);
添加参数(新的BasicNameValuePair(“名字”,fname));
添加参数(新的BasicNameValuePair(“姓氏”,lname));
参数添加(新的BasicNameValuePair(“电子邮件”),电子邮件);
参数添加(新的BasicNameValuePair(“电话”,电话));
参数添加(新的BasicNameValuePair(“传真”,传真));
参数add(新的BasicNameValuePair(“地址”,addr));
参数add(新的BasicNameValuePair(“address1”,addr1));
参数添加(新的BasicNameValuePair(“设施”,设施));
参数添加(新的BasicNameValuePair(“密码”,pwd));
参数add(新的BasicNameValuePair(“zip”,zipcode));
参数添加(新的BasicNameValuePair(“城市”,城市));
添加参数(新的BasicNameValuePair(“状态”,状态));
添加(新的BasicNameValuePair(“how_you_found”,huf));
添加(新的BasicNameValuePair(“如何找到价值”,hufv));
//获取JSON对象
//请注意,创建产品url接受POST方法
JSONObject json=jsonParser.makeHttpRequest(“http://eastendwebsolutions.com/wf/ws/“,”GET“,params);
Log.d(“名字”,fname);
Log.d(“姓氏”,lname);
Log.d(“电子邮件”,电子邮件);
//检查cat日志以获取响应
d(“创建响应”,json.toString());
//检查成功标签
试一试{
String success=json.getString(“status”);
String message=json.getString(“message”);
如果(成功=“0”){
Toast.makeText(WolfActivity.this,message,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(WolfActivity.this,“Error”+消息,Toast.LENGTH_LONG.show();
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
@抑制警告(“弃用”)
//@凌驾
受保护的void onPostExecute(字符串结果){
if(pDialog.isShowing()){
pDialog.disclose();
}
Log.d(“结果”,结果);
AlertDialog.Builder=新建AlertDialog.Builder(WolfActivity.this);
建造商名称(“信息”);
builder.setMessage(“成功注册”);
builder.setIcon(R.drawable.app_图标);
builder.create().show();
}
}
以上代码以错误终止
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String java.lang.String.toString()”
在zonup.wolf.WolfActivity$signmeup.onPostExecute(WolfActivity.java:222)中
在zonup.wolf.WolfActivity$signmeup.onPostExecute(WolfActivity.java:135)
错误,因为此语句记录为Log.d(“Result”,Result);在功能上
onPostExecute(字符串结果)
我试图在doInBackground()方法中用状态提醒用户,但没有祝酒词:(正确吗?试试这种方法,您可以看到json响应中的消息
class signmeup extends AsyncTask<String, String, String> {
String message="";
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(WolfActivity.this);
pDialog.setMessage("Loading");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("section","user"));
params.add(new BasicNameValuePair("action","new"));
params.add(new BasicNameValuePair("device_type","2"));
params.add(new BasicNameValuePair("device_token","dhdkhgkdfhgkhfdghkdfjhgkjdfhgkdfhkhkHKhdkhsdkhKJHKWJHDSKAHDKJSAHJKDfhkashfkdjhfkjhskjhKJHJk"));
params.add(new BasicNameValuePair("first_name",fname));
params.add(new BasicNameValuePair("last_name",lname));
params.add(new BasicNameValuePair("email",email));
params.add(new BasicNameValuePair("phone",phone));
params.add(new BasicNameValuePair("fax",fax));
params.add(new BasicNameValuePair("address",addr));
params.add(new BasicNameValuePair("address1",addr1));
params.add(new BasicNameValuePair("facility",facility));
params.add(new BasicNameValuePair("password",pwd));
params.add(new BasicNameValuePair("zip",zipcode));
params.add(new BasicNameValuePair("city",city));
params.add(new BasicNameValuePair("state",state));
params.add(new BasicNameValuePair("how_you_found",huf));
params.add(new BasicNameValuePair("how_you_found_value",hufv));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest("http://eastendwebsolutions.com/wf/ws/", "GET", params);
Log.d("First Name",fname);
Log.d("Last Name",lname);
Log.d("Email",email);
// check log cat for response
Log.d("Create Response", json.toString());
// check for success tag
try {
String success = json.getString("status");
message = json.getString("message");
if(success == "0") {
Toast.makeText(WolfActivity.this,message ,Toast.LENGTH_LONG).show();
} else {
Toast.makeText(WolfActivity.this,"Error "+message ,Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
message=e.toString();
e.printStackTrace();
}
return message;
}
@SuppressWarnings("deprecation")
//@Override
protected void onPostExecute(String Result) {
if(pDialog.isShowing()){
pDialog.dismiss();
}
Log.d("Result",Result);
AlertDialog.Builder builder=new AlertDialog.Builder(WolfActivity.this);
builder.setTitle("Info");
builder.setMessage(Result);
builder.setIcon(R.drawable.app_icon);
builder.create().show();
}
}
类注册扩展了异步任务{
字符串消息=”;
私人对话;
JSONParser JSONParser=新的JSONParser();
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(WolfActivity.this);
pDialog.setMessage(“加载”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
//建筑参数
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“节”、“用户”);
参数添加(新的BasicNameValuePair(“操作”,“新”));
参数添加(新的BasicNameValuePair(“设备类型”,“2”));
参数添加(新的BasicNameValuePair(“设备令牌”,“DHDKHGKDFHGKHFDGHKDFJHGKJDFHGKDFHKHKHKHDKHSDKKHKKJKKWJHDKJSAHJKDFHKKHFKJKJKJJJJJK”);
添加参数(新的BasicNameValuePair(“名字”,fname));
添加参数(新的BasicNameValuePair(“姓氏”,lname));
参数添加(新的BasicNameValuePair(“电子邮件”),电子邮件);
参数添加(新的BasicNameValuePair(“电话”,电话));
参数添加(新的BasicNameValuePair(“传真”,传真));
参数add(新的BasicNameValuePair(“地址”,addr));
参数add(新的BasicNameValuePair(“address1”,addr1));
参数添加(新的BasicNameValuePair(“facili