error parsing data org.json.jsonexception end of input at character 0 of

  • Antworten:3
vali k
  • Forum-Beiträge: 10

15.12.2012, 13:10:17 via Website

Ich versuche gerade ein längeres Arry mithilfe eines JSONObjektes zu übermitteln bekomme aber immer eine
Fehlermeldung:

12-15 11:55:12.691: E/Buffer Error(778): Error converting result java.lang.NullPointerException
12-15 11:55:12.699: E/JSON Parser(778): Error parsing data org.json.JSONException: End of input at character 0 of

Java
1public class AntragAufBeurlaubung extends Activity {
2
3 private TextView textViewError;
4 private EditText editTextGrundDerAbwesenheit;
5 private EditText editTextTan;
6 private EditText editTextTage;
7 private EditText editTextStunden;
8 private EditText editTextAbUhrzeit;
9 private EditText editTextBisUhrzeit;
10 private Button buttonUebernehmen;
11 private DatePicker datePickerAmVomDatum;
12 private DatePicker datePickerVorraussichtlichBisZumDatum;
13 private CheckBox checkBoxNofallout;
14
15 // JSON Response node names
16 private static String KEY_SUCCESS = "success";
17 private static String KEY_ERROR = "error";
18 private static String KEY_ERROR_MSG = "error_msg";
19 private static String KEY_VONDATUM = "vonDatum";
20 private static String KEY_BISDATUM = "bisDatum";
21 private static String KEY_ABZEIT = "abZeit";
22 private static String KEY_BISZEIT = "bisZeit";
23 private static String KEY_STUNDENZAHL = "stundenZahl";
24 private static String KEY_TAGEANZ = "tageanz";
25 private static String KEY_GRUND = "grund";
26 private static String KEY_TAN = "tan";
27 private static String KEY_MELDUNG = "meldung";
28
29 @Override
30 public void onCreate(Bundle savedInstanceState) {
31 super.onCreate(savedInstanceState);
32 setContentView(R.layout.antragaufbeurlaubung);
33
34 textViewError = (TextView) this
35 .findViewById(R.id.textViewErrorAntragAufBeurlaubung);
36 editTextGrundDerAbwesenheit = (EditText) this
37 .findViewById(R.id.editTextGrundDerAbwesenheit1);
38 editTextTan = (EditText) this.findViewById(R.id.editTextTan1);
39 editTextTage = (EditText) this.findViewById(R.id.editTextTage1);
40 editTextStunden = (EditText) this.findViewById(R.id.editTextStunden1);
41 editTextAbUhrzeit = (EditText) this
42 .findViewById(R.id.editTextAbUhrzeit1);
43 editTextBisUhrzeit = (EditText) this
44 .findViewById(R.id.editTextBisUhrzeit1);
45 buttonUebernehmen = (Button) this.findViewById(R.id.buttonUebernehmen1);
46 datePickerAmVomDatum = (DatePicker) findViewById(R.id.datePickerVonDatum1);
47 datePickerVorraussichtlichBisZumDatum = (DatePicker) findViewById(R.id.datePickerBisZumDatum1);
48 checkBoxNofallout = (CheckBox) findViewById(R.id.checkBoxKeinAusfallAntragAufBeurlaubung);
49
50 buttonUebernehmen.setOnClickListener(new OnClickListener() {
51
52 public void onClick(View v) {
53 String grund = editTextGrundDerAbwesenheit.getText().toString();
54 String tan = editTextTan.getText().toString();
55 String tage = editTextTage.getText().toString();
56 String stunden = editTextStunden.getText().toString();
57 String abUhrzeit = editTextAbUhrzeit.getText().toString();
58 String bisUhrzeit = editTextBisUhrzeit.getText().toString();
59 String nofallout = checkCheckBoxSend();
60
61 String amVomDatum = "";
62 String bisZumDatum = "";
63
64 Integer datVomYear = datePickerAmVomDatum.getYear();
65 Integer datVomMothFalse = datePickerAmVomDatum.getMonth();
66 Integer datVomDate = datePickerAmVomDatum.getDayOfMonth();
67
68 Integer datVomMoth = datVomMothFalse + 1;
69
70 StringBuilder vom = new StringBuilder();
71 vom.append(datVomYear.toString()).append(datVomMoth.toString())
72 .append(datVomDate.toString());
73 amVomDatum = vom.toString();
74
75 Log.d("NEUEKRANKMELDUNG_VONDATUM", amVomDatum);
76
77 Integer datBisYear = datePickerVorraussichtlichBisZumDatum
78 .getYear();
79 Integer datBisMothFalse = datePickerVorraussichtlichBisZumDatum
80 .getMonth();
81 Integer datBisDate = datePickerVorraussichtlichBisZumDatum
82 .getDayOfMonth();
83
84 Integer datBisMoth = datBisMothFalse + 1;
85
86 StringBuilder bis = new StringBuilder();
87 bis.append(datBisYear.toString()).append(datBisMoth.toString())
88 .append(datBisDate.toString());
89 bisZumDatum = bis.toString();
90
91 Log.d("NEUEKRANKMELDUNG_BISDATUM", bisZumDatum);
92
93 UserFunctions userFunctions = new UserFunctions();
94 JSONObject jsonAddBeurlaubung = userFunctions.addBeurlaubung(
95 amVomDatum, bisZumDatum, abUhrzeit, bisUhrzeit,
96 stunden, tage, grund, tan, nofallout);
97
98 Log.d("JSON-AddBeurlaubung", jsonAddBeurlaubung.toString());
99
100 try {
101 if (jsonAddBeurlaubung.getString(KEY_SUCCESS) != null) {
102 // Close all views before launching Dashboard
103 Intent main = new Intent(getApplicationContext(),
104 Main.class);
105 startActivity(main);
106 main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
107 } else if (jsonAddBeurlaubung.getString(KEY_ERROR) != null) {
108 textViewError.setTextColor(Color.RED);
109 textViewError.setText(jsonAddBeurlaubung
110 .getString(KEY_MELDUNG));
111 }
112
113 } catch (JSONException e) {
114 e.printStackTrace();
115 }
116 }
117 });
118 }
119
120 public String checkCheckBoxSend() {
121 boolean checked = ((CheckBox) checkBoxNofallout).isChecked();
122
123 if (checked) {
124 Log.d("ANTRAGAUFBEURLAUBUNG_CHECKBOX", "1");
125 return "1";
126 } else {
127 Log.d("ANTRAGAUFBEURLAUBUNG_CHECKBOX", "0");
128 return "0";
129 }
130 }
131}

PHP
1if ($tag == 'alleAbsenzen') {
2 $schid = $_POST['schid'];
3 $list = $db->alleAbsenzen($schid);
4 $response['tag'] = $tag;
5 $response['success'] = 1;
6 $response['liste'] = $list;
7 //echo $list;
8 echo json_encode($response);
9 unset($response);
10}
1public function alleAbsenzen($schid) {
2 $response['daten'] = array();
3 //$list[] = array('art', 'amvom','bis', 'tage', 'stunden', 'grund', 'BU-Status', 'erfasst_genehmigt', 'erfasst_am', 'vervollst./bearbeitet', 'maz', 'tan');
4 $sqlpre = "abs_";
5 $neuabfrage = "SELECT * FROM " . $sqlpre . "schueler WHERE id ='" . $schid . "'";
6 $ergebnis = mysql_query($neuabfrage);
7 $row = mysql_fetch_object($ergebnis);
8
9
10
11 $abfrage = "SELECT * FROM " . $sqlpre . "absenzen WHERE schuelerid ='" . $schid . "' ORDER by amvondatum";
12 $ergebnis = mysql_query($abfrage);
13
14 $i = 0;
15 WHILE ($row = mysql_fetch_object($ergebnis)) {
16
17 $i++;
18 $list['art'] = $row->absart;
19 $absid = $row->id;
20 if (empty($row->fertigdatum) && ($row->absart == "AB")) {
21 $list['amvom'] = sql2datumuhrzeitmp($row->amvondatum);
22 } else if (empty($row->fertigdatum) && ($row->absart == "LM")) {
23 $list['amvom'] = sql2datumuhrzeitmp($row->amvondatum);
24 } else {
25 $list['amvom'] = sql2datumuhrzeitmp($row->amvondatum);
26 }
27
28
29 if (!empty($row->bisdatum)) {
30 $list['bis'] = sql2datumuhrzeitmp($row->bisdatum);
31 } else {
32
33 }
34 $list['tage'] = $row->tageanz;
35 $list['stunden'] = $row->stundenanz;
36 if (!empty($row->grundablehnung)) {
37 if ($row->bustatus == "2") {
38 $list['grund'] = $row->grund . $row->grundablehnung . " bitte um Rücksprache!";
39 } else {
40 $list['grund'] = $row->grund . $row->grundablehnung;
41 }
42 } else {
43 $list['grund'] = $row->grund;
44 }
45 switch ($row->bustatus) {
46 case "0": $bustatus = "unbearbeitet";
47 break;
48 case "1": $bustatus = "abgelehnt";
49 break;
50 case "2": $bustatus = "noch offen";
51 break;
52 case "3": $bustatus = "genehmigt";
53 break;
54 default: $bustatus = "";
55 }
56 $list['BU-Status'] = $bustatus;
57
58 if (!empty($row->genehmigtvon)) {
59 $list['erfasst_genehmigt'] = $row->genehmigtvon;
60 } else {
61 $list['erfasst_genehmigt'] = $row->erfasstvon;
62 }
63 if (!empty($row->fassdatum)) {
64 $list['erfasst_am'] = sql2datumuhrzeitmp($row->fassdatum);
65 } else {
66 $list['erfasst_am'] = "";
67 }
68 if (empty($row->fertigdatum) && !($row->absart == "BU")) {
69 $list['vervollst./bearbeitet'] = "UNENTSCHULDIGT";
70 } else if ($row->nachweis > 0) {
71 $list['vervollst./bearbeitet'] = "Nachweis fehlt, somit noch unentschuldigt";
72 } else {
73 $list['vervollst./bearbeitet'] = sql2datumuhrzeitmp($row->fertigdatum);
74 }
75 $list['maz'] = $row->mahnanz;
76 $list['tan'] = $row->tan;
77 $list['absid'] = $row->id;
78 array_push($response["daten"], $list);
79
80 //echo "\t" . $list[$i]['art'];
81 }
82 //ECHO $response['daten'];
83 //echo $list;
84 return $response['daten'];
85 }

Antworten
Christian
  • Forum-Beiträge: 307

18.12.2012, 14:08:05 via Website

Hi vali k;

ähm und wo tritt der Fehler auf?

Ich vermute mal jetzt einfach hier:
1try {
2 if (jsonAddBeurlaubung.getString(KEY_SUCCESS) != null) {
3
4 // Close all views before launching Dashboard
5 Intent main = new Intent(getApplicationContext(), Main.class);
6 startActivity(main);
7 main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
8
9 } else if (jsonAddBeurlaubung.getString(KEY_ERROR) != null) {
10
11 textViewError.setTextColor(Color.RED);
12 textViewError.setText(jsonAddBeurlaubung.getString(KEY_MELDUNG));
13 }
14} catch (JSONException e) {
15 e.printStackTrace();
16}

bekommst du hier schon ein funktionierendes JSONObjekt?
1UserFunctions userFunctions = new UserFunctions();
2JSONObject jsonAddBeurlaubung = userFunctions.addBeurlaubung( amVomDatum, bisZumDatum, abUhrzeit, bisUhrzeit,stunden, tage, grund, tan,nofallout);
3
4Log.d("JSON-AddBeurlaubung", jsonAddBeurlaubung.toString());
Also wird die Log ausgeben?

Ach wozu ist eigentlich der PHP Code? Schickst du die JSON von einem Server an dein Gerät? Falls ja wird das ganzer schon auf dem Server richtig zusammen gebaut?

mfg Christian

— geändert am 18.12.2012, 14:09:58

Antworten
vali k
  • Forum-Beiträge: 10

19.12.2012, 17:06:59 via Website

Ja ich schicke das JSON von einem Server zu meinem Gerät (momentan noch localhost) und soweit ich das gesehen habe wird das JSON auch richtig zusammen gebaubaut. Nein Das Log wird nicht mehr ausgegeben aber ich weis nicht warum.

Antworten
Christian
  • Forum-Beiträge: 307

26.12.2012, 01:54:11 via Website

Hi,


Ja ich schicke das JSON von einem Server zu meinem Gerät (momentan noch localhost)

Mmhh das sieht doch schon nach dem Problem aus. Wenn der Server bei dir als LocalHost läuft kann er nicht so einfach mit deinem Handy Verbindung aufnehmen. Beide Geräte müssen mindestens im gleichem Netzwerk hängen. Wenn du das hast musst du mal schauen ob du mit dem Handybrowser auf deinen Server zugreifen kannst. Falls das geht kannst du nun dein JSON an die App schicken.

Mfg Christian

Antworten