douzhizao0270 2013-06-12 04:32
浏览 47
已采纳

将arraylist bean从android传递给webservice php

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条回答 默认 最新

  • douxuanma4357 2013-06-12 05:27
    关注

    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 + "
    ");
                    }
                    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作