가 나는 그래서 동일한을 추가 한 매 5 분마다 10 ~ 100 레코드를 얻을 것이다 그래서 여기에 SQLite는안드로이드 JSON 배열이
에서를 JSON 데이터 저장을 얻기 위해 This을 따라 빈 때 루프에서 JSON 데이터 실패 가져 오기 서비스와 그 서비스에 대한 기능은 이제 문제는 15 ~ 20과 같은 몇 가지 기록이이 모든 5 반복이 오류 java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
을 보여주는 후에 그것은 .. 일부 기록에 대한 데이터를 얻을 것이다 때마다 5 분 그래서 여기
에게 반복 분 예를 들어 그 atleast 5 시간에 30 레코드를 받고 오전이 오류 ...,
이 때문에 나는
어떻게이 오류로 얻을 수 ... 여기에 내가 그 사라 누락 어떤 서버에서 30 개 기록을 얻을 수 아니다 인해 .. 그 기록 데이터를 잃어버린하고이 내 서비스 클래스이다 .....
public class ServMain2 extends Service {
public static final String MyShredPrefs = "MyShredPrefs_data";
Context mContext = this;
SQLiteDatabase sqLiteDatabase;
String HttpJSonURL;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
HttpJSonURL = intent.getExtras().getString("mystrdata");
return START_STICKY;
}
@Override
public void onCreate() {
SharedPreferences s = getSharedPreferences(MyShredPrefs, 0);
HashMap<String, String> map= (HashMap<String, String>) s.getAll();
//ti= Integer.parseInt(map.get("time_int"));
ti=3000;
try{
SQLiteDataBaseBuild();
SQLiteTableBuild();
new StoreJSonDataInToSQLiteClass(ServMain2.this).execute();
}
catch(Exception e){
Toast.makeText(getApplicationContext(), "Reconnecting to Server", Toast.LENGTH_LONG).show();
}
}
private class StoreJSonDataInToSQLiteClass extends AsyncTask<Void, Void, Void> { //line No :65
public Context context;
String FinalJSonResult;
public StoreJSonDataInToSQLiteClass(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpServiceClass httpServiceClass = new HttpServiceClass(HttpJSonURL);
try {
httpServiceClass.ExecutePostRequest(); //line No :87
if (httpServiceClass.getResponseCode() == 200) {
FinalJSonResult = httpServiceClass.getResponse();
if (FinalJSonResult != null) {
try {
JSONObject JObject = new JSONObject(FinalJSonResult);
JSONArray response =JObject.getJSONArray("response");
for(int i = 0 ; i < response.length(); i++) {
JSONObject res = response.getJSONObject(i);
String usr_id=res.getString("usr_id");
String phn_no=res.getString("phn_no");
String usr_name=res.getString("usr_name");
String usr_status= "NEW";
String SQLiteDataBaseQueryHolder = "INSERT INTO "+ SQLiteHelper.TABLE_NAME+" (usr_id,phn_no,usr_name,usr_status) VALUES('"+usr_id+"','"+phn_no+"','"+usr_name+"','"+usr_status+"');";
sqLiteDatabase.execSQL(SQLiteDataBaseQueryHolder);
}
}
catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
else {
Toast.makeText(context, httpServiceClass.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
sqLiteDatabase.close();
//progressDialog.dismiss();
Toast.makeText(ServMain2.this,"Load Done", Toast.LENGTH_LONG).show();
}
}
public void SQLiteDataBaseBuild(){
sqLiteDatabase = openOrCreateDatabase(SQLiteHelper.DATABASE_NAME, Context.MODE_PRIVATE, null);
}
public void SQLiteTableBuild(){
sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS "+SQLiteHelper.TABLE_NAME+" ("+SQLiteHelper.T_USR_NO+" INTEGER PRIMARY KEY AUTOINCREMENT ,"+SQLiteHelper.T_USR_ID+" INTEGER(6),"+SQLiteHelper.T_PHN_NO+" VARCHAR2(15) , "+SQLiteHelper.T_USR_NAME+" TEXT, "+SQLiteHelper.T_USR_STATUS+" VARCHAR2(15) NOT NULL)");
}
public void DeletePreviousData(){
sqLiteDatabase.execSQL("DELETE FROM "+SQLiteHelper.TABLE_NAME+"");
}
}
업데이트
난 ... 단지 몇 시간 동안 N을 오류가 발생하고 오, 항상 10 레코드에서 ..이 오류로 인해 나는 2 레코드가 누락되었습니다 ...이 오류가 작동하기 전에 오류가 발생하기 전에 작동합니다.
10 회 실행시에만 2 또는 3의 URL을 읽지 못했습니다. 시간 나는 내 코드에서 ... 줄 번호를 추가 한
AsyncTask #1 calls detatch()
I/System.out: @@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #2 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #3 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #4 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #5 calls detatch()
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at java.net.URI.parseURI(URI.java:353)
at java.net.URI.<init>(URI.java:204)
at java.net.URI.create(URI.java:728)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:79)
at my.api.service.HttpServiceClass.ExecutePostRequest(HttpServiceClass.java:85)
at my.api.service.ServMain2$StoreJSonDataInToSQLiteClass.doInBackground(ServMain2.java:87)
at my.api.service.ServMain2$StoreJSonDataInToSQLiteClass.doInBackground(ServMain2.java:65)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at java.net.URI.parseURI(URI.java:353)
at java.net.URI.<init>(URI.java:204)
at java.net.URI.create(URI.java:728)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:79)
at my.api.service.HttpServiceClass.ExecutePostRequest(HttpServiceClass.java:85)
at my.api.service.ServMain2$StoreJSonDataInToSQLiteClass.doInBackground(ServMain2.java:87)
at my.api.service.ServMain2$StoreJSonDataInToSQLiteClass.doInBackground(ServMain2.java:65)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
@@@@@@@[email protected]@@@@@@[email protected]@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #3 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #4 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #5 calls detatch()
다시 그 wokring이 내 로그 캣입니다 좋은 ... 같은 // 라인 번호 : 65
업데이트 1
내 로그 내가 분명히 해당 URL을 말할 수 보아서 16,때문에 그가 null보기 몇 번 및 일부 배 로딩 URL 및 일부 시간 오류로 인해 널 URL에 몇 번
@@@@@@@[email protected]@@@@@@[email protected]@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #3 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #4 calls detatch()
@@@@@@@http://www......myservie/api_.......this is my live url$$$$$$$AsyncTask #5 calls detatch()
누락
수있는 하나는이 종류에 저를 추천 ..이 같은 URL을하기 만하면 나는 URL이 다른 서비스
업데이트 2
를 형성 얻고 있기 때문에 내 JSON 데이터 서버에서 35,846,510,403,210 시간이 좀 빈 JSON 배열그것은해야 보냅니다
{
"response": [
{
"usr_id": "1",
"phn_no": "1234567890",
"usr_name": "Demo"
},
{
"usr_id": "2",
"phn_no": "1234567890",
"usr_name": "Demo"
},
{
"usr_id": "3",
"phn_no": "1234567890",
"usr_name": "Demo"
}
]
}
그러나 언젠가는 내가 날씨를 확인하기 위해 if(response!= null && response .length()>0) {
을 추가 한
{
"response": []
}
처럼 빈 JSON 배열을 얻고있다 그것의 빈 또는 아닙니다 ..하지만 여전히 같은 문제 ..심지어 나는 그대로 어떤 일이 ... 어떻게 이런 종류의에 그 빈 문자열을 처리 할
감사를 .. 그러나 그것은 5 루프에 실패 다시 같은 일이 생깁니다 .. URL이로드되지 않는다고 생각하는 중 일부 시간 .. 오류가 발생했습니다 ..하지만 ... 가능하면 해결할 수있는 방법을 제안 해주세요. 내 라인을 추가 한 적이 있지만 같은 오류 – MLN
은 response.length()의 로그를 출력하고 0보다 큰 모든 시간에 데이터를 가져 오는 것을 볼 수 있습니다. –
나는 로그 라인'System.out.print ("@@@@@@@ Working $$$$$$$")을 추가했다. 그러나 .. 이전의 Logcat과 비슷하다. 나는 URL의 insted이다. 점점 작업 ... 나는 이것을'if (응답! = null && 응답 .length()> 0)'.. 안에 추가했다. 그러나 여전히 나는 같은 오류가 발생한다. – MLN