JSONparsing或AsyncTask或settext无法正常工作

时间:2013-06-26 19:10:01

标签: android json apache android-asynctask settext

在这个问题中我试图获取一些输入,然后将它们发布到一个url,然后json解析响应,然后通过textView显示输出,但我的最后一页是空白的.. 我附加了所有的java和xml文件以及日志文件

{
"user_id": "23",
"firstname": "",
"lastname": "",
"email": "9654008791",
"isd_code": "91‌​",
"mobile": "9654008791",
"gender": "",
"dob": "0000-00-00",
"image": null,
"status": "0",
‌​"verification_key": "7062"
}

主要Activity.java

package com.example.omg;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity implements OnClickListener{

    EditText isd_code,mob_num,device_token,dev;
    Button submit;

        String sisd_code ;
        String smob_num ;
        String sdevice_token ;
        String sdev ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        isd_code=(EditText)findViewById(R.id.etisd_code);
        mob_num=(EditText)findViewById(R.id.etmob_num);
        device_token=(EditText)findViewById(R.id.etdev_code);
        dev=(EditText)findViewById(R.id.etdev);
        submit=(Button)findViewById(R.id.button1);
        submit.setOnClickListener(this);

        }


    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    sisd_code = isd_code.getText().toString();
    smob_num = mob_num.getText().toString();
    sdevice_token = device_token.getText().toString();
    sdev = dev.getText().toString();

    String sarray[]={sisd_code,smob_num,sdevice_token,sdev};

    Bundle basket =new Bundle();
     basket.putStringArray("key",sarray);
     Intent a= new Intent(MainActivity.this,output.class);
     a.putExtras(basket);
     startActivity(a);
    }
    }

JSONparser.java

package com.example.omg;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.util.Log;
import android.widget.Toast;

public class JSONparser {
    static InputStream is = null;
    static JSONObject jObj = null;
    String json;





public  JSONObject getJSONFromUrl(String url,String smob_num,String sisd_code ,String sdevice_token ,String sdev )
    {
try{
 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost(url);
 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
        nameValuePairs.add(new BasicNameValuePair("isd_code", "sisd_code"));
        nameValuePairs.add(new BasicNameValuePair("mob_num", "smob_num"));
        nameValuePairs.add(new BasicNameValuePair("device_token", "sdevice_token"));
        nameValuePairs.add(new BasicNameValuePair("device", "sdev"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse httpResponse = httpclient.execute(httppost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();    
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

return jObj;

}
}

OUTPUT.JAVA

package com.example.omg;

import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;

public class output extends Activity{

    String url ="http://txtomg.universe.in/mobile/?node=account/signup";
    private static final String TAG_STATUS ="status";
    private static final String TAG_USER_ID = "user_id";
    private static final String TAG_FIRST_NAME = "firstname";
    private static final String TAG_LAST_NAME = "lastname";
    private static final String TAG_EMAIL = "email";
    private static final String TAG_DOB = "dob";
    private static final String TAG_ISD_CODE = "isd_code";
    private static final String TAG_IMAGE = "image";
    private static final String TAG_MOBILE = "mobile";
    private static final String TAG_VERIFICATION_KEY = "verification_key";
    private static final String TAG_GENDER = "gender";
    JSONArray contacts = null;
    String gotbread[];
    TextView efname,elname,edob,estatus,eisd_code,ever_key,egender,eemail,ephone,euser_id,eimage;
    JSONObject d,c ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);
        Bundle gotbasket=getIntent().getExtras();
                gotbread=gotbasket.getStringArray("key");
            String  code= gotbread[0];
            String  mobile=gotbread[1];
            String  token=gotbread[2];
            String  status=gotbread[3];

                 ultimate ult = new ultimate();
                ult.execute(code,mobile,token,status);

    }
    public void display(JSONObject e){

        c = e;
                efname=(TextView)findViewById(R.id.edfname);
                 elname=(TextView)findViewById(R.id.edlname);
                 edob=(TextView)findViewById(R.id.eddob);
                 estatus=(TextView)findViewById(R.id.edstatus);
                 eisd_code=(TextView)findViewById(R.id.edisdcode);
                 ever_key=(TextView)findViewById(R.id.edverkey);
                 egender=(TextView)findViewById(R.id.edgender);
                 eemail=(TextView)findViewById(R.id.edemail);
                 ephone=(TextView)findViewById(R.id.edmobile);
                euser_id =(TextView)findViewById(R.id.eduserid);
                eimage=(TextView)findViewById(R.id.edimage);

                  // Creating JSON Parser instance


                  // getting JSON string from URL

                try {


                     int user_id = c.getInt(TAG_USER_ID);
                      String fname = c.getString(TAG_FIRST_NAME);
                      String lname = c.getString(TAG_LAST_NAME);

                     String email = c.getString(TAG_EMAIL);

                      int mobile= c.getInt(TAG_MOBILE);
                      int isd_code= c.getInt(TAG_ISD_CODE);
                     String gender = c.getString(TAG_GENDER);

                      int dob= c.getInt(TAG_DOB);
                      String image= c.getString(TAG_IMAGE);

                      int status = c.getInt(TAG_STATUS);
                      int ver_key= c.getInt(TAG_VERIFICATION_KEY); 
                      efname.setText(fname);
                         elname.setText(lname);
                         edob.setText(String.valueOf(dob));
                         estatus.setText(String.valueOf(status));
                         eisd_code.setText(String.valueOf(isd_code));
                         ever_key.setText(String.valueOf(ver_key));
                         egender.setText(gender);
                         eemail.setText(email);
                         ephone.setText(String.valueOf(mobile));
                        euser_id.setText(String.valueOf(user_id));
                        eimage.setText(image);
                } catch (Throwable e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

//              



    }   

    private class ultimate extends AsyncTask<String,String,JSONObject>
    {

        @Override
        protected JSONObject doInBackground(String... params) {
            // TODO Auto-generated method stub
             String ucode = params[0];
             String umobile = params[1];
             String utoken = params[2];
             String ustatus = params[3];

             JSONparser jParser = new JSONparser();
            d = jParser.getJSONFromUrl(url, umobile, ucode, utoken, ustatus);


            return d;
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            display(result);    
        }
        }

   }

main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="26dp"
        android:text="ISD CODE:" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="25dp"
        android:text="MOBILE:" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="28dp"
        android:text="DEVICE_TOKEN" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView3"
        android:layout_below="@+id/textView3"
        android:layout_marginTop="33dp"
        android:text="DEVICE" />

    <EditText
        android:id="@+id/etisd_code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/textView1"
        android:ems="10"
        android:inputType="textPassword" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etdev"
        android:layout_marginTop="38dp"
        android:layout_toRightOf="@+id/textView3"
        android:text="Submit" />

    <EditText
        android:id="@+id/etmob_num"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/etisd_code"
        android:layout_alignTop="@+id/textView2"
        android:ems="10" />

    <EditText
        android:id="@+id/etdev_code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView3"
        android:layout_alignBottom="@+id/textView3"
        android:layout_alignParentRight="true"
        android:ems="10" />

    <EditText
        android:id="@+id/etdev"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView4"
        android:layout_alignBottom="@+id/textView4"
        android:layout_alignParentRight="true"
        android:ems="10" />

</RelativeLayout>

LIST.XML

   <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/edfname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView">
    </TextView>

    <TextView
        android:id="@+id/edlname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/eddob"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/edmobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/eduserid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/edverkey"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/edisdcode"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/edemail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView"/>

    <TextView
        android:id="@+id/edimage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:text="TextView" />


    <TextView
        android:id="@+id/edgender"
        android:layout_width="match_parent"
         android:layout_height="wrap_content"
        android:text="TextView"
        android:ems="10" />

    <TextView
        android:id="@+id/edstatus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" 
        android:text="TextView">

    </TextView>


</LinearLayout>

崩溃日志

06-27 01:10:43.080: I/global(590): Loaded time zone names for en_US in 5032ms.
06-27 01:10:43.110: W/System.err(590): org.json.JSONException: No value for user_id
06-27 01:10:43.110: W/System.err(590):  at org.json.JSONObject.get(JSONObject.java:354)
06-27 01:10:43.110: W/System.err(590):  at org.json.JSONObject.getString(JSONObject.java:510)
06-27 01:10:43.110: W/System.err(590):  at com.example.omg.output.display(output.java:68)
06-27 01:10:43.110: W/System.err(590):  at com.example.omg.output$ultimate.onPostExecute(output.java:127)
06-27 01:10:43.110: W/System.err(590):  at com.example.omg.output$ultimate.onPostExecute(output.java:1)
06-27 01:10:43.121: W/System.err(590):  at android.os.AsyncTask.finish(AsyncTask.java:417)
06-27 01:10:43.121: W/System.err(590):  at android.os.AsyncTask.access$300(AsyncTask.java:127)
06-27 01:10:43.121: W/System.err(590):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
06-27 01:10:43.121: W/System.err(590):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-27 01:10:43.121: W/System.err(590):  at android.os.Looper.loop(Looper.java:123)
06-27 01:10:43.130: W/System.err(590):  at android.app.ActivityThread.main(ActivityThread.java:3683)
06-27 01:10:43.130: W/System.err(590):  at java.lang.reflect.Method.invokeNative(Native Method)
06-27 01:10:43.130: W/System.err(590):  at java.lang.reflect.Method.invoke(Method.java:507)
06-27 01:10:43.130: W/System.err(590):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-27 01:10:43.130: W/System.err(590):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-27 01:10:43.130: W/System.err(590):  at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:1)

在您的ultimate班级doInBackground内,您正在返回未初始化的班级成员c,而不是d,这是jParser.getJSONFromUrl的结果d 1}}。你必须返回{{1}}