org.json.JSONException:值java.lang.String类型的<!DOCTYPE不能转换为JSONObject而收到有效的JSON响应

问题描述:

我想读取有效的JSON响应,但得到错误字符串不能转换为JSONObject唐不知道为什么。?org.json.JSONException:值java.lang.String类型的<!DOCTYPE不能转换为JSONObject而收到有效的JSON响应

的Android代码

String sendParam = sendParams[0]; 

byte[] sendParamsByte = sendParam.getBytes("UTF-8"); 

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
conn.setRequestProperty("Content-Length", String.valueOf(sendParamsByte.length)); 
conn.setDoOutput(true); 
conn.getOutputStream().write(sendParamsByte); 

InputStream responseInputStream = conn.getInputStream(); 
StringBuffer responseStringBuffer = new StringBuffer(); 
byte[] byteContainer = new byte[1024]; 

for (int i; (i = responseInputStream.read(byteContainer)) != -1;) { 
    responseStringBuffer.append(new String(byteContainer, 0, i)); 
} 

JSONObject response = new JSONObject(responseStringBuffer.toString()); 

我的JSON响应 -

{ 
    "firstOne":"XXXXXXXXXX", 
    "secOne":"XXXXXXXXXXXXXXXXXX", 
    "thrOne":"XXXXXXXXXXXXX", 
    "final":"XXXXXXXXXXXXXXX" 
} 

错误日志 -

org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 
06-02 12:09:13.975 2310-3800/X.x W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
06-02 12:09:13.975 2310-3800/X.x W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:159) 
06-02 12:09:13.975 2310-3800/X.x W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:172) 

任何理念..?

+0

你可以发布错误日志吗?并且将你的代码发布到解析json的地方。 –

+0

你从服务器得到错误 –

+0

可能是你的服务器没有从你身边得到适当的参数或检查你的服务器端代码 –

conn.setRequestProperty("Content-Length","application/json;charset=UTF-8"); 

更改为此。

+0

已经尝试过 – star

+0

你有没有打印回复?非常感谢你的回应? –

+0

它已经在我的问题中作为示例 – star

检查发送给服务器的参数是否为JSON格式。如果他们在JSON格式然后改变你的 “内容类型” 到 “应用/ JSON

conn.setRequestProperty("Content-Type", "application/json"); 
+0

试图以这两种格式发送 – star

+0

谁给了我负面的标记......你能解释一下为什么吗? –

试试这个

  int responseCode=conn.getResponseCode(); 

      if (responseCode == HttpsURLConnection.HTTP_OK) { 

       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       StringBuilder sb = new StringBuilder(); 

       String json; 
       while ((json = bufferedReader.readLine()) != null) { 
        sb.append(json + "\n"); 
       } 
       return sb.toString().trim(); 
      } 

你可以从的JSONObject sb.toString()。修剪()。 祝你好运