从json检索会在android中出现错误
我正在尝试从服务器检索一行 我得到以下错误 日志从json检索会在android中出现错误,android,json,Android,Json,我正在尝试从服务器检索一行 我得到以下错误 日志 E/log_tag(1948): connection success [sendernumber=9040307070] E/log_tag(1948): result ?9545357470[{"TaskId":"1"},{"TaskId":"2"}] E/log_tag(1948): Error parsing data org.json.JSONException: Value 9040307070 of type java.lang.L
E/log_tag(1948): connection success [sendernumber=9040307070]
E/log_tag(1948): result ?9545357470[{"TaskId":"1"},{"TaskId":"2"}]
E/log_tag(1948): Error parsing data org.json.JSONException: Value 9040307070 of type java.lang.Long cannot be converted to JSONArray
JSON代码
String result = null;
InputStream is = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.mydomainname.org/task/senttask.php");
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("sendernumber",name.toString()));
//nameValuePairs.add(new BasicNameValuePair("sendernumber","9595959595"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("log_tag", "connection success "+nameValuePairs);
}
catch(Exception e)
{
Log.e("log_tag", "Error in http connection "+e.toString());
Toast.makeText(getActivity(), "Connection fail", Toast.LENGTH_SHORT).show();
}
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,HTTP.UTF_8),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result=sb.toString();
Log.e("log_tag", "result "+result.toString());
}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
Toast.makeText(getActivity(), " Input reading fail", Toast.LENGTH_SHORT).show();
}
try
{
JSONArray jArray = new JSONArray(result);
String s="",s1,s2,s3,s4,s5;
Log.w("Lengh",""+jArray.length());
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
s=json_data.getString("TaskId");
Log.e("taskid from server","s");
}
}
catch(JSONException e)
{
Log.e("log_tag", "Error parsing data "+e.toString());
Toast.makeText(getActivity(), "JsonArray fail", Toast.LENGTH_SHORT).show();
}
如果您想让它简单地工作,请使用
JSONArray-jArray=new-JSONArray(result.substring(result.indexOf(“[”));
而不是JSONArray-jArray=new-JSONArray(result);
但是,您的Web服务似乎有问题。它返回的是
9545357470[{“TaskId”:“1”},{“TaskId”:“2”}]
,实际上应该是[{“TaskId”:“1”},{“TaskId”:“2”}]
。因此,我不确定当您试图创建json数组以将其作为响应发送时到底发生了什么,但最好的解决方案是修复该问题,而不是修复此处的代码。您似乎没有正确获得响应json数组!!请检查并发布您得到的响应我只得到了这个大部分错误日志您得到的响应是9545357470[{“TaskId”:“1”},{“TaskId”:“2”}]为什么数据9545357470与您的响应一起附加?您对此进行了调查吗?确实,您得到的响应不是有效的JSON,因此您无法像JSON一样解析它。请调查Web服务器。
TaskId int primary key
sendernumber varchar(100)