1

i'm newbie in android with web service

i'm trying to pass arraylist from android to webservice php server

here's my bean code:

public class ExpressionBean {
    public static final String EXPRESSION_ID = "expressionID";
    public static final String EXPRESSION_TEXT = "expressionText";
    public static final String ANS_TEXT1 = "ansText1";
    public static final String ANS_TEXT2 = "ansText2";
    public static final String ASSESSEE_ANSWER = "assesseeAnswer";

    private String expressionID;
    private String expressionText;
    private String ansText1;
    private String ansText2;
    private String assesseeAnswer;

    public String getExpressionID() {
        return expressionID;
    }

    public void setExpressionID(String expressionID) {
        this.expressionID = expressionID;
    }

    public String getExpressionText() {
        return expressionText;
    }

    public void setExpressionText(String expressionText) {
        this.expressionText = expressionText;
    }

    public String getAnsText1() {
        return ansText1;
    }

    public void setAnsText1(String ansText1) {
        this.ansText1 = ansText1;
    }

    public String getAnsText2() {
        return ansText2;
    }

    public void setAnsText2(String ansText2) {
        this.ansText2 = ansText2;
    }

    public String getAssesseeAnswer() {
        return assesseeAnswer;
    }

    public void setAssesseeAnswer(String assesseeAnswer) {
        this.assesseeAnswer = assesseeAnswer;
    }

}

and here's my doInBackround on async task :

protected Boolean doInBackground(Void... params) {
            // TODO: attempt authentication against a network service.

            boolean result = false;
            // test = new TestBean();

            // int resultTest = 0;
            UserFunctions userFunction = new UserFunctions();

            Log.d(TAG, "UID : " + mEmail);
            // Log.d(TAG, "resultTest : " + resultTest);
            JSONObject jsonTest = userFunction.storeTest(mEmail);
            Log.d(TAG, "After JSON TEST ");

            try {
                if (jsonTest.getString(KEY_SUCCESS) != null) {
                    String res = jsonTest.getString(KEY_SUCCESS);
                    JSONObject testData = jsonTest.getJSONObject(TAG_TEST);
                    test = new TestBean();
                    test.setTestid(testData.getInt(TAG_TEST_ID));
                    test.setUid(testData.getInt(TAG_UID));
                    JSONArray list = new JSONArray();
                    String list2;
                    for (int position = 0; position < expressionList.size(); position++) {
                        Gson gson = new Gson();
                        list.put(gson.toJson(expressionList.get(position)));

                    }
                    Log.d(TAG, "JSONArray list coy : " + list);
                    UserFunctions uf = new UserFunctions();

                    JSONObject jsonHistoryList = new JSONObject();
                    jsonHistoryList = uf.storeHistoryList(list.toString());
                    if (Integer.parseInt(res) == 1) {
                        result = true;
                        finish();
                    } else {
                        result = false;
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
                return false;
            }

            // TODO: register the new account here.
            return result;
        }

and here's storeHistoryList Method :

public JSONObject storeHistoryList(String list) {

        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("tag", storeHistory_tag));
        params.add(new BasicNameValuePair("list", list));

        JSONObject json = jsonParser.getJSONFromUrl(URL, params);
        return json;
    }

i want to pass list to web service

list is an arraylist ExpressionBean

i used gson for convert bean to json

but when i execute, the log said

"error parsing data...

jsonarray cannot be converted to jsonobject

what i must to do? thanks

1 Answer 1

4

try this code

JSONParser.java


  public class JSONParser
    {

        static InputStream is ;
        static JSONObject jObj = null;
        static String json = "";

        String Dataurl = "";
        // constructor
        public JSONParser(String url) 
        {
            Dataurl = url;
        }

        // function get json from url by making HTTP POST or GET method
        public JSONObject makeHttpRequestResponse(String method,List<NameValuePair> Data_Request_Response) 
        {
            try {

                // check for request method
                if(method == "POST_Request_Response")
                {

                    HttpClient httpClient = new DefaultHttpClient();
                    HttpPost httpPost = new HttpPost(Dataurl);
                    httpPost.setEntity(new UrlEncodedFormEntity(Data_Request_Response));

                    HttpResponse httpResponse = httpClient.execute(httpPost);
                    HttpEntity httpEntity = httpResponse.getEntity();
                    is = httpEntity.getContent();

                }
                else if(method == "GET_Request_Response")
                {
                    HttpClient httpClient = new DefaultHttpClient();
                    String paramString = URLEncodedUtils.format(Data_Request_Response, "utf-8");
                    Dataurl += "?" + paramString;
                    HttpGet httpGet = new HttpGet(Dataurl);

                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    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 JSON String
            return jObj;    
        }// End Http Request Response   
    }

Yourfilename.java



 // Object of the Json Parser Class
    JSONParser mJsonParser = new JSONParser(DataUrl);
    JSONObject mJsonObject_Request = new JSONObject();

        List<NameValuePair> Send_Request = new ArrayList<NameValuePair>();
        Send_Request.add(new BasicNameValuePair("Token", "Data"));
        Send_Request.add(new BasicNameValuePair("Token1","Data"));



            try {
                mJsonObject_Request = mJsonParser.makeHttpRequestResponse("POST_Request_Response",Request);

                Log.d("No Of Tables", "" + mJsonObject_Request.names().length());
                Log.d("Name Of Tables", "" + mJsonObject_Request.names());
                Log.d("DATA", "" + mJsonObject_Request);

           } 
           catch (Exception e) {


          }

here data URL is your web service link.

Sign up to request clarification or add additional context in comments.

10 Comments

i mean, i want to send "Data". and "Data" is an arraylist of object... how can i do that?
In your case you need to first fatch data on the jsonArray and take json object form the json array..
Could you give me an example for it? in this case, i want to pass Arraylist of expression bean with token "list", and pass String tag with token "tag". So there will be 2 member on json object that i pass to the php server, "list" and "tag".
For example, In "list" there are 5 expressionObject, [{"expressionID1", "expressionText1", ... "assesseeAns1"}, {"expressionID2", "expressionText2", ... "assesseeAns2"}, ..., {"expressionID5", "expressionText5", ... "assesseeAns5"}].
In "tag" there is 1 String [{"storeHistory"}]. So, when php server do $tag = $_POST['tag'], there will be "storeHistory" on $tag. And when php server do $list = $_POST['list'], $list will contain 5 expressionObject that i pass before.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.