我是具有网络服务的android新手
我试图将arraylist从android传递到webservice php服务器
这是我的bean代码:
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; } }
这是我在异步任务上的doInBackround:
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; }
这是storeHistoryList方法:
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; }
我想将列表传递给Web服务
list是一个arraylist ExpressionBean
我用gson将bean转换为json
但是当我执行时,日志说
“错误解析数据…
jsonarray无法转换为jsonobject
我该怎么办?谢谢
试试这个代码
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) { }
此处的数据URL是您的Web服务链接。