PHP로 작성된 API를 통해 데이터베이스의 데이터를 쿼리하는 Android 앱을 작성하고 있습니다. 결과를 JSONArray로받습니다. 어떤 이유를 들어JSONArray를 반환하는 동안 Android 예외가 발생했습니다.
이 앱은 JSONArray를 반환 할 때 충돌 유지 :
protected JSONArray doInBackground(String... urls) {
try {
Log.e("STORES: ", readWSDet());
JSONArray WSDet = new JSONArray(readWSDet());
Log.e("POST: ", WSDet.toString());
return WSDet;
} catch (Exception e) {
this.exception = e;
e.printStackTrace();
Log.e("ERROR:" , this.exception.getMessage());
return null;
}
}
모두 "로그"전화는 동일한 코드를 작동하고
[{"id":"0","stop":"18:00:00","price":"99.95","start":"08:00:00","description":"some description","name":"Test","day":"2014-05-04","availability":"9"}]
의 형태로 적절한 출력을 제공 내 프로젝트 내의 다른 액티비티 : (
디버그 모드에서 모든 단계를 처리하는 앱을 볼 수 있으며 복귀 할 때 catch 절로 점프합니다. 다행히도, 나는 단지 로그에서 예외가 발생하도록 관리하지 않습니다.
어떻게 잘못 될지 감지 할 수있는 힌트가 있습니까?
미리 감사드립니다.
P. 서식 문제를 용서하거나 정보를 누락하는 경우는, 이쪽은 내 첫 번째 질문은 여기하시기 바랍니다)
편집 1 :
로그 캣 충돌까지 창조에서 활동 :
04-04 07:33:20.633: D/dalvikvm(2015): GC_FOR_ALLOC freed 378K, 9% free 4827K/5272K, paused 80ms, total 92ms
04-04 07:33:21.273: W/Bundle(2015): Key dbid expected String but value was a java.lang.Long. The default value <null> was returned.
04-04 07:33:21.493: W/Bundle(2015): Attempt to cast generated internal exception:
04-04 07:33:21.493: W/Bundle(2015): java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
04-04 07:33:21.493: W/Bundle(2015): at android.os.Bundle.getString(Bundle.java:1121)
04-04 07:33:21.493: W/Bundle(2015): at com.application.jmgmobile.WorkshopdetailsActivity.onCreate(WorkshopdetailsActivity.java:149)
04-04 07:33:21.493: W/Bundle(2015): at android.app.Activity.performCreate(Activity.java:5231)
04-04 07:33:21.493: W/Bundle(2015): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-04 07:33:21.493: W/Bundle(2015): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-04 07:33:21.493: W/Bundle(2015): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-04 07:33:21.493: W/Bundle(2015): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-04 07:33:21.493: W/Bundle(2015): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-04 07:33:21.493: W/Bundle(2015): at android.os.Handler.dispatchMessage(Handler.java:102)
04-04 07:33:21.493: W/Bundle(2015): at android.os.Looper.loop(Looper.java:136)
04-04 07:33:21.493: W/Bundle(2015): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-04 07:33:21.493: W/Bundle(2015): at java.lang.reflect.Method.invokeNative(Native Method)
04-04 07:33:21.493: W/Bundle(2015): at java.lang.reflect.Method.invoke(Method.java:515)
04-04 07:33:21.493: W/Bundle(2015): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-04 07:33:21.493: W/Bundle(2015): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-04 07:33:21.493: W/Bundle(2015): at dalvik.system.NativeStart.main(Native Method)
04-04 07:33:22.213: E/STORES:(2015): [{"id":"0","stop":"18:00:00","price":"99.95","start":"08:00:00","description":"some description","name":"Test","day":"2014-05-04","availability":"9"}]
04-04 07:33:32.933: E/POST:(2015): [{"id":"0","stop":"18:00:00","price":"99.95","start":"08:00:00","description":"some description","name":"Test","day":"2014-05-04","availability":"9"}]
04-04 07:33:32.943: I/System.out(2015): loaded dataset
04-04 07:33:32.983: W/ResourceType(2015): No package identifier when getting value for resource number 0x00000000
04-04 07:33:35.813: D/AndroidRuntime(2015): Shutting down VM
04-04 07:33:35.813: W/dalvikvm(2015): threadid=1: thread exiting with uncaught exception (group=0xb1aceba8)
04-04 07:33:36.043: E/AndroidRuntime(2015): FATAL EXCEPTION: main
04-04 07:33:36.043: E/AndroidRuntime(2015): Process: com.application.jmgmobile, PID: 2015
04-04 07:33:36.043: E/AndroidRuntime(2015): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.application.jmgmobile/com.application.jmgmobile.WorkshopdetailsActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.os.Handler.dispatchMessage(Handler.java:102)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.os.Looper.loop(Looper.java:136)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-04 07:33:36.043: E/AndroidRuntime(2015): at java.lang.reflect.Method.invokeNative(Native Method)
04-04 07:33:36.043: E/AndroidRuntime(2015): at java.lang.reflect.Method.invoke(Method.java:515)
04-04 07:33:36.043: E/AndroidRuntime(2015): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-04 07:33:36.043: E/AndroidRuntime(2015): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-04 07:33:36.043: E/AndroidRuntime(2015): at dalvik.system.NativeStart.main(Native Method)
04-04 07:33:36.043: E/AndroidRuntime(2015): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.content.res.Resources.getValue(Resources.java:1123)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.content.res.Resources.getDrawable(Resources.java:698)
04-04 07:33:36.043: E/AndroidRuntime(2015): at com.application.jmgmobile.WorkshopdetailsActivity.onCreate(WorkshopdetailsActivity.java:178)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.Activity.performCreate(Activity.java:5231)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-04 07:33:36.043: E/AndroidRuntime(2015): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-04 07:33:36.043: E/AndroidRuntime(2015): ... 11 more
편집 2 : 자바 파일의
전체 코드 :
package com.application.jmgmobile;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Base64;
import android.util.Log;
import android.view.Window;
import android.widget.EditText;
import org.apache.http.*;
import com.google.analytics.tracking.android.EasyTracker;
class ParseWorkshopdetails extends AsyncTask<String, Void, JSONArray> implements Serializable{
JSONArray ergeniss1 = null;
private Exception exception;
private String username= "";
private String security_token= "";
private String security_key= "";
private String security= "";
private String dbid= "";
public static final String PREFS_NAME = "JMGMobileSettings";
public ParseWorkshopdetails(Context c)
{
SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 0);
this.username = settings.getString("username", "none");
this.dbid=settings.getString("dbid", "");
this.security_token = settings.getString("security_token", "");
this.security_key = settings.getString("security_key", "none");
this.security = security_token + ":" + security_key;
}
public String readWSDet(){
HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("HERE_GOES_MY_URL");
StringBuilder builder = new StringBuilder();
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("dbid", dbid));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httppost.setHeader("Authorization", "Basic " + Base64.encodeToString(security.getBytes(), Base64.NO_WRAP));
} catch (IOException e) {
// TODO Auto-generated catch block
}
try {
HttpResponse response = client.execute(httppost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e(ParseWorkshopdetails.class.toString(), "Failed to download data");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println(builder.toString());
return builder.toString();
}
private void creatListOfStores() {
//String readAgentString = readAgents();
try {
JSONArray jsonArray = new JSONArray(readWSDet());
Log.i(ParseWorkshopdetails.class.getName(),
"Number of entries " + jsonArray.length());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.i(ParseWorkshopdetails.class.getName(), jsonObject.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected JSONArray doInBackground(String... urls) {
try {
Log.e("STORES: ", readWSDet());
JSONArray WSDet = new JSONArray(readWSDet());
Log.e("POST: ", WSDet.toString());
return WSDet;
} catch (Exception e) {
this.exception = e;
e.printStackTrace();
Log.e("ERROR:" , this.exception.getMessage());
return null;
}
}
protected void onPostExecute(JSONArray objekt) {
// TODO: check this.exception
this.ergeniss1 = objekt;
}
public JSONArray getErgeniss() {
return ergeniss1;
}
}
어떤 오류가 생겼습니까? –
로그를 보내주십시오. –
@ Jitesh : 초기 게시물에 logcat을 추가했습니다. @ Bhanu :이 메시지는 execatly wat입니다.) – Kai