Android 如何在onPostExecute()异步任务中获得响应

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

我最近开始在android上工作,现在我正在使用AsyncTask。下面的代码是如何从API中得到响应的。每个建议都是值得欣赏的

 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