2016-05-06 63 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

相关问题