【问题标题】:Android-JSP org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObjectAndroid-JSP org.json.JSONException:Java.lang.String 类型的值 <!DOCTYPE 无法转换为 JSONObject
【发布时间】:2016-08-28 08:50:46
【问题描述】:

您好,我是 android 开发的新手。 我在使用 JSP 将 Android 与 MySQL 数据库连接时遇到问题。 我已经阅读了大量的文件,但我不知道如何解决这个问题。 我不确定,但我认为问题与空指针问题有关。 但我不知道它在哪里.....

这是我的 java 代码。

主Activity.java

package com.example.user.nacho_http_connection_test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class MainActivity extends Activity {
EditText edit_id, edit_pw;
/**
 * ATTENTION: This was auto-generated to implement the App Indexing API.
 * See https://g.co/AppIndexing/AndroidStudio for more information.
 */
private GoogleApiClient client;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    edit_id = (EditText) findViewById(R.id.login_id);
    edit_pw = (EditText) findViewById(R.id.login_pw);

    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}

public void join_btn(View view) {     
    Intent intent;
    intent = new Intent(this, LoginActivity.class);
    startActivity(intent);

    finish();

}

public void login_btn(View view) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    String sMessage = edit_id.getText().toString();

    String result = SendByHttp(sMessage);

    String[][] parsedData = jsonParserList(result);

    if (parsedData[0][0].equals("succed")) {

        Toast.makeText(MainActivity.this, "Login Success", Toast.LENGTH_LONG).show();
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
        finish();
    }
}

private String SendByHttp(String msg) {
    if (msg == null) {
        msg = "";
    }

    String URL = "http://IP address/Test_Json/User.jsp"; 
    DefaultHttpClient client = new DefaultHttpClient();

    try {
        HttpPost post = new HttpPost(URL + "?id=" + edit_id.getText().toString()+"&pw="+edit_pw.getText().toString());

        HttpResponse response = client.execute(post);

        BufferedReader bufreader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "utf-8"));

        String line = null;
        String result = "";

        while ((line = bufreader.readLine()) != null) {
            result += line;
        }

        return result;
    } catch (Exception e) {
        e.printStackTrace();
        client.getConnectionManager().shutdown();

        return "";
    }
}

public String[][] jsonParserList(String pRecvServerPage){
    Log.i("whole content from Server", pRecvServerPage);

    try{

        JSONObject json = new JSONObject(pRecvServerPage);
        JSONArray jArr = json.getJSONArray("List");

        String[] jsonName = {"msg1","msg2","msg3"};
        String[][] parseredData = new String[jArr.length()][jsonName.length];
        for(int i = 0; i<jArr.length();i++){
            json = jArr.getJSONObject(i);
            for (int j=0;j<jsonName.length; j++){
                parseredData[i][j] = json.getString(jsonName[j]);
            }

        }

        for(int i=0;i<parseredData.length;i++)
        {
            Log.i("Analyzed JSON Data"+i+":",parseredData[i][0]);
            Log.i("Analyzed JSON Data"+i+":",parseredData[i][1]);
            Log.i("Analyzed JSON Data"+i+":",parseredData[i][2]);
        }


        return parseredData;

    }catch (JSONException e){
        e.printStackTrace();
        return null;
    }
}
}

用户.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import = "org.json.simple.*"%>
<%@ page import ="java.sql.*" %>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
JSONObject jsonMain = new JSONObject();
JSONArray jArray = new JSONArray();

JSONObject jObject = new JSONObject();

Class.forName("com.mysql.jdbc.Driver"); 
try{
  Connection conn = DriverManager.getConnection(
    "jdbc:mysql://IP address/dbname", "admin", "1234");
  Statement stmt = conn.createStatement();

  String query = "select * from MEMBER";


ResultSet rs = stmt.executeQuery(query);

  int i =0;
  while(rs.next())
  {

   String _id = rs.getString("id");
   String _pw = rs.getString("pw");
   if(id.equals(_id)&&pw.equals(_pw)){
    i =1;
    jObject.put("msg1", "succed");
    jObject.put("msg2", "two");
    jObject.put("msg3", "three");
   }
  }

  if(i==0){
   jObject.put("msg1", "failed");
   jObject.put("msg2", "two");
   jObject.put("msg3", "three");

  }

  stmt.close();
  conn.close();

  jArray.add(0,jObject);

  jsonMain.put("List",jArray);

  out.println(jsonMain.toJSONString());
 }catch(Exception e){
 }
%>

Logcat

05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test I/whole content from Server: <!DOCTYPE html><html><head><title>Apache Tomcat/8.0.33 - Error report</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> </head><body><h1>HTTP Status 404 - /Test_Json/User.jsp</h1><div class="line"></div><p><b>type</b> Status report</p><p><b>message</b> <u>/Test_Json/User.jsp</u></p><p><b>description</b> <u>The requested resource is not available.</u></p><hr class="line"><h3>Apache Tomcat/8.0.33</h3></body></html>
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at org.json.JSON.typeMismatch(JSON.java:111)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:160)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:173)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at com.example.user.nacho_http_connection_test.MainActivity.jsonParserList(MainActivity.java:126)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at com.example.user.nacho_http_connection_test.MainActivity.login_btn(MainActivity.java:66)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.view.View$1.onClick(View.java:4015)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.view.View.performClick(View.java:4780)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.view.View$PerformClick.run(View.java:19866)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.os.Looper.loop(Looper.java:135)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5254)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
05-03 09:10:48.031 3982-3982/com.example.user.nacho_http_connection_test W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
05-03 09:10:48.032 3982-3982/com.example.user.nacho_http_connection_test D/AndroidRuntime: Shutting down VM


                                                                                           --------- beginning of crash
05-03 09:10:48.032 3982-3982/com.example.user.nacho_http_connection_test E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                           Process: com.example.user.nacho_http_connection_test, PID: 3982
                                                                                           java.lang.IllegalStateException: Could not execute method of the activity
                                                                                               at android.view.View$1.onClick(View.java:4020)
                                                                                               at android.view.View.performClick(View.java:4780)
                                                                                               at android.view.View$PerformClick.run(View.java:19866)
                                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                               at android.os.Looper.loop(Looper.java:135)
                                                                                               at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                                               at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                                            Caused by: java.lang.reflect.InvocationTargetException
                                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                                               at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                               at android.view.View$1.onClick(View.java:4015)
                                                                                               at android.view.View.performClick(View.java:4780) 
                                                                                               at android.view.View$PerformClick.run(View.java:19866) 
                                                                                               at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                               at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                               at android.os.Looper.loop(Looper.java:135) 
                                                                                               at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                                               at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                            Caused by: java.lang.NullPointerException: Attempt to read from null array
                                                                                               at com.example.user.nacho_http_connection_test.MainActivity.login_btn(MainActivity.java:75)
                                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                                               at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                               at android.view.View$1.onClick(View.java:4015) 
                                                                                               at android.view.View.performClick(View.java:4780) 
                                                                                               at android.view.View$PerformClick.run(View.java:19866) 
                                                                                               at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                               at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                               at android.os.Looper.loop(Looper.java:135) 
                                                                                               at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                               at java.lang.reflect.Method.invoke(Native Method) 
                                                                                               at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
05-03 09:10:52.844 3982-3982/com.example.user.nacho_http_connection_test I/Process: Sending signal. PID: 3982 SIG: 9

任何帮助将不胜感激。

【问题讨论】:

    标签: java android mysql json jsp


    【解决方案1】:

    您正在发送 HTML(在 Jsp 中)并在 Android 活动中期待 JSON。 确保 http://IPaddress/Test_Json/User.jsp/"?id=" + +&pw=" 将返回 Json 响应。

    【讨论】:

    • 嗯...我能做些什么呢?我不是调试专家;)
    • 从浏览器点击 url 会得到什么?
    • 对不起,我来晚了。我只能看到错误页面,它显示在 logcat 的第一行。我的意思是,那个 html 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多