2013-03-12 90 views
3

我输入错误“解析数据时出错org.json.JSONException:字符10输入结束于”。我用Chrome的插件邮差测试了我的PHP,服务器端似乎没问题。请查看下面的代码并感谢您的帮助。解析数据时出错org.json.JSONException:字符10输入结束时

PHP代码:

public function login($alias, $password){ 
$user_info = $this->getUserFromDatabase($alias, $password); 
if ($user_info != false){ 
$response["success"] = "true"; 
$response["user_id"] = $user_info["userID"]; 
$response["userFirstName"] = $user_info["userFirstName"]; 
$response["userRank"] = $user_info["userRank"]; 
echo json_encode($response); 
}else{ 
$response["success"] = "false"; 
$response["error"] = "true"; 
echo json_encode($response); 
} 
} 

public function getUserFromDatabase($android_alias, $android_password) { 
$db_query = mysql_query("SELECT userID, userFirstName, userRank FROM capUserTable 
WHERE userAlias = '$android_alias' AND userPassword = '$android_password'") 
or die(mysql_error()); 

$query_results = mysql_fetch_assoc($db_query); 
return $query_results; 
} 

邮差结果:

{ 
"success": "true", 
"user_id": "1", 
"userFirstName": "username", 
"userRank": "99" 
} 

Java代码:

private InputStream inputStream = null; 
private JSONObject jObject = null; 
private String json = ""; 

public JSONparser() { 
} 

public JSONObject getJSONFromURL(String URL, List<NameValuePair> params){ 
try{ 
DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(URL); 
httpPost.setEntity(new UrlEncodedFormEntity(params)); 
HttpResponse httpResponse = httpClient.execute(httpPost); 
HttpEntity httpEntity = httpResponse.getEntity(); 
inputStream = httpEntity.getContent(); 
}catch(UnsupportedEncodingException e){ 
e.printStackTrace(); 
Log.e("UnsupportedEncodingException", "Unsupported Encoding Exception" + e.toString()); 
}catch(ClientProtocolException e){ 
e.printStackTrace(); 
}catch(IOException e){ 
e.printStackTrace(); 
}catch(Exception e){ 
e.printStackTrace(); 
} 

try{ 
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"), 10); 
StringBuilder sb = new StringBuilder(); 
String line = null; 
while ((line = reader.readLine()) != null){ 
sb.append(line + "\n"); 
} 
inputStream.close(); 
json = sb.toString(); 
}catch(Exception e){ 
Log.e("Buffer Error", "Error converting result " + e.toString()); 
} 

try{ 
jObject = new JSONObject(json); //this is where the problem occurs 
}catch(JSONException e){ 
Log.e("JSON Parser", "Error parsing data " + e.toString()); 
} 
return jObject; 
} 
+0

后堆栈跟踪用问题 – 2013-03-12 05:01:22

+0

在android中记录json变量的内容并检查它。 – Josnidhin 2013-03-12 05:03:26

+0

hi josnidhin,json变量为null。 – thienwgu 2013-03-12 05:07:24

回答

2

嗨,我有ç哎呀你的反应得到一个问题

String response = "{success\":\"true\",\"user_id\": \"1\",\"userFirstName\":\"username\", \"userRank\": \"99\"}"; 

其在JSON验证显示有效,但在成功的关键不是“开头,所以它的创建JSON对象像

{"userFirstName":"username","user_id":"1","success\"":"true","userRank":"99"} 

所以它无法从成功

获取值

写东西像

String response = "{\"success\":\"true\",\"user_id\": \"1\",\"userFirstName\":\"username\", \"userRank\": \"99\"}"; 

,它应该解析这样

  try { 
      JSONObject jobj = new JSONObject(response); 
      String succes = jobj.getString("success"); 
      String userFirstName = jobj.getString("userFirstName"); 
      String user_id = jobj.getString("user_id"); 
      String userRank = jobj.getString("userRank"); 
      String user_id = jobj.getString("user_id"); 

     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

嗨ankitmakwana,我今天会尝试,看看这是否可以解决它。谢谢您的回复。 – thienwgu 2013-03-12 12:49:11

+0

梦幻般的ankitmakwana,这没有把戏,谢谢你的帮助。 – thienwgu 2013-03-12 23:29:45

+0

@Ankit Makwana:你好Ankit,你能回答这个问题吗? http://stackoverflow.com/questions/31238764/posting-base64-image-to-php-server-in-android/31238916?noredirect=1#comment50477664_31238916 – Devraj 2015-07-06 07:42:50

1

其实我也是前脸.... 我清楚通过改变我的贾森类的bug同样的问题...

// function get json from url 
    // by making HTTP POST or GET mehtod 
    public JSONObject makeHttpRequest(String url, String method, 
        List<NameValuePair> params) { 

      // Making HTTP request 
      try { 

        // check for request method 
        if(method == "POST"){ 
          // request method is POST 
          // defaultHttpClient 
          DefaultHttpClient httpClient = new DefaultHttpClient(); 
          HttpPost httpPost = new HttpPost(url); 
          httpPost.setEntity(new UrlEncodedFormEntity(params)); 

          HttpResponse httpResponse = httpClient.execute(httpPost); 
          HttpEntity httpEntity = httpResponse.getEntity(); 
          is = httpEntity.getContent(); 

        }else if(method == "GET"){ 

          // request method is GET 
          DefaultHttpClient httpClient = new DefaultHttpClient(); 
          String paramString = URLEncodedUtils.format(params, "utf-8"); 
          url += "?" + paramString; 
          HttpGet httpGet = new HttpGet(url); 

          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 { 
       Log.d("response string",json); 
        jObj = new JSONObject(json); 
      } catch (JSONException e) { 
        Log.e("JSON Parser", "Error parsing data " + e.toString()); 
      } 

      // return JSON String 
      return jObj; 

    } 

我希望这将有助于ü

+0

我的类是非常相似的,只有我得到IOException错误因此,我也得到一个BufferError和一个JSONParsing错误!为什么? – Pheonix7 2013-12-04 09:42:54

相关问题