2016-05-03 24 views
0

こんにちは私はAndroid開発にはとても新しいです。 JSPを使用してAndroidデータベースとMySQLデータベースを接続することに問題があります。 私はたくさんの文書を読みましたが、この問題の解決方法はわかりません。 私はよく分かりませんが、問題はヌルポインタの問題に関連していると思います。 しかし、私はそれがどこにあるのかわかりません.....Android-JSP org.json.JSONException:値<!java.lang.String型のDOCTYPEをJSONObjectに変換できません

これは私の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; 
    } 
} 
} 

User.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 

任意の助けいただければ幸いです。

答えて

0

HTML(In Jsp)を送信し、AndroidアクティビティでJSONが送信されることを期待しています。 くださいhttp://IPアドレス/ Test_Json/User.jsp/"?ID =" + + & PW =」JSONレスポンスを返すことを確認してください。うまく

+0

...私はそれについて行うことができますか?私はプロじゃありませんよ) –

+0

ブラウザからURLを打つと何が得られますか? –

+0

申し訳ありませんが遅いです。私はlogcatの最初の行に表示されるエラーページしか見ることができません。つまり、そのHTMLコードです。 –

関連する問題