2016-05-06 78 views
0

我將JSON數組發佈到web服務,但我無法解決它。 在下面的代碼中,「str」是將JSONArray轉換爲字符串。 JSONArray由JSONObjects組成,每個JSONObject由3個參數組成(ID,Question,Answer)。將JSON數組發佈到web服務中android

 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("feedbackjson", str)); 
     try 
     { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://172.16.10.64:8080/plugleadservices/rest/feedbackmanagement/feedbacknew"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpParams httpParameters = new BasicHttpParams(); 
      DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      //is = entity.getContent(); 

      result = EntityUtils.toString(entity).toString(); 


     } catch (Exception e) 
     { 
      Log.e("Loading Runnable Error in http connection :", e.toString()); 
     } 


     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(); 
      result = sb.toString(); 
     } 
     catch (Exception e) 
     { 
      Log.e("Loading Runnable Error converting result :", e.toString()); 
     } 


     JSONObject json_data = new JSONObject(result); 
     System.out.println("#### Status Message : " +json_data.getString("statusMessage").toString()); 
     System.out.println("#### Company ID : " +json_data.getInt("company_id")); 

這就是我得到

05-06 14:50:48.459: W/System.err(8368): org.json.JSONException: End of input at character 0 of 
05-06 14:50:48.459: W/System.err(8368):  at org.json.JSONTokener.syntaxError(JSONTokener.java:450) 
05-06 14:50:48.459: W/System.err(8368):  at org.json.JSONTokener.nextValue(JSONTokener.java:97) 
05-06 14:50:48.459: W/System.err(8368):  at org.json.JSONObject.<init>(JSONObject.java:156) 
05-06 14:50:48.459: W/System.err(8368):  at org.json.JSONObject.<init>(JSONObject.java:173) 
05-06 14:50:48.459: W/System.err(8368):  at com.plugleads.feedback.FeedBackQuestionsActivity.callWebservice(FeedBackQuestionsActivity.java:712) 
05-06 14:50:48.459: W/System.err(8368):  at com.plugleads.feedback.FeedBackQuestionsActivity.checkBoxes(FeedBackQuestionsActivity.java:371) 
05-06 14:50:48.459: W/System.err(8368):  at com.plugleads.feedback.FeedBackQuestionsActivity.isValidData(FeedBackQuestionsActivity.java:350) 
05-06 14:50:48.459: W/System.err(8368):  at com.plugleads.feedback.FeedBackQuestionsActivity$1.onClick(FeedBackQuestionsActivity.java:166) 
05-06 14:50:48.459: W/System.err(8368):  at android.view.View.performClick(View.java:4785) 
05-06 14:50:48.459: W/System.err(8368):  at android.view.View$PerformClick.run(View.java:19884) 
05-06 14:50:48.460: W/System.err(8368):  at android.os.Handler.handleCallback(Handler.java:739) 
05-06 14:50:48.460: W/System.err(8368):  at android.os.Handler.dispatchMessage(Handler.java:95) 
05-06 14:50:48.460: W/System.err(8368):  at android.os.Looper.loop(Looper.java:135) 
05-06 14:50:48.460: W/System.err(8368):  at android.app.ActivityThread.main(ActivityThread.java:5343) 
05-06 14:50:48.460: W/System.err(8368):  at java.lang.reflect.Method.invoke(Native Method) 
05-06 14:50:48.460: W/System.err(8368):  at java.lang.reflect.Method.invoke(Method.java:372) 
05-06 14:50:48.460: W/System.err(8368):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
05-06 14:50:48.460: W/System.err(8368):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 

錯誤我想通過以下JSONArray到web服務

[ 
       { 
        "fk_Company_id":4, 
        "q_Answer":"no", 
        "q_Name":"qwhgdfqw" 
      }, 
      { 
       "fk_Company_id":2, 
       "q_Answer":"yes", 
       "q_Name":"sdfsdf" 
       }, 
       { 
        "fk_Company_id":2, 
        "q_Answer":"yes", 
        "q_Name":"xcvfdgd" 
        }, 
        { 
         "fk_Company_id":2, 
         "q_Answer":"no", 
         "q_Name":"xfgdf" 
         }] 

在此先感謝。

+0

在FeedBackQuestionsActivity中哪個行號是712? –

+0

712 - JSONObject json_data = new JSONObject(result);結果爲空@ρяσѕρєяK – Naveen

回答

0

試試這個代碼:

List<NameValuePair> params1 = new ArrayList<NameValuePair>(); 
     params1.add(new BasicNameValuePair("dev_id", ID)); 
     params1.add(new BasicNameValuePair("Question", question)); 
     params1.add(new BasicNameValuePair("Answer", ans)); 
     cd = new ConnectionDetector(context); 
     isInternetPresent = cd.isConnectingToInternet(); 
     if (isInternetPresent) { 
      @SuppressWarnings("unused") 
      JSONObject json = jsonParser.makeHttpRequest(url, "POST", 
        params1); 

     } 
+0

此答案如何幫助OP解決當前問題? –

0

org.json.JSONException:輸入結束在

首先不需要字符0在每行的末尾附加\n字符閱讀時json字符串。只需使用:

while ((line = reader.readLine()) != null) 
{ 
    sb.append(line); 
} 

而第二個重要的錯誤是解析字符串爲JSONObject,JSON字符串包含JSONArray爲根項目取代JSONObject,使轉換resultJSONArray .change:

JSONObject json_data = new JSONObject(result); 

JSONArray json_data = new JSONArray(result); 
+0

感謝您回覆@ρяσѕρєяK.在更改爲JSONArray之後,我得到了同樣的錯誤。實際上,在這裏我想通過JSONArray並獲得JSONObject作爲來自webservice的響應。 – Naveen

+0

@Naveen:爲什麼不使用'HttpURLConnection'而不是'HttpClient',因爲在最新版本中刪除了Apache HTTP Client –

+0

我已經引用此鏈接http://stackoverflow.com/questions/13134019/http-post-method-passing-空值對的服務器/ 13134287#13134287。我過去兩天來到這裏。 – Naveen

相關問題