If anweisung wird ausgelassen

  • Antworten:4
Lars R.
  • Forum-Beiträge: 8

30.01.2013, 17:14:34 via Website

Hallo,

Ich hoffe hier unter Kennern kann mir weitergeholfen werden. Es handelt sich eigentlich um ein simples Problem was ich aber auf keinem Weg aussortiert bekomme.

Also jetzt zum Problem :

1public void loginget()
2 {
3 InputStream is = null;
4
5 try
6 {
7 URL url = new URL( "tut hier nicht viel zur sache );
8 is = url.openStream();
9 BufferedReader br = new BufferedReader(new InputStreamReader(is));
10 String echo = br.readLine();
11 String lecho = "valid";
12 if (echo.equals(lecho))
13 {
14 finish();
15 }
16
17
18 }
19 catch ( Exception e ) {
20 e.printStackTrace();
21 }
22 finally {
23 if ( is != null )
24 try { is.close(); } catch ( IOException e ) { }
25 }
26 }

Was das ganze machen soll ist ziemlich simpel. Es wird auf die Seite zugegriffen auf der wird einfach nur ein "valid" ausgegeben und per bufferedreader und inputstream eingelesen. Dann soll das ganze in eine Variable eingelesen und verglichen werden. Da die Seite momentan nur valid zurück gibt, sollte die Bedingung also erfüllt sein und die App beendet werden. So weit funktioniert das ganze in einer Fassung außerhalb der Ppp also einem reinem Java Programm schonmal. Nur in diesem Fall nicht. Weder virtuell als auf meinem richtigem Smartphone.
Ebenfalls habe ich auch an die Permissions gedacht (falls es daran liegt , im Falle das ich garnicht ins internet mit dieser App könnte.)
Ich bitte also um Mithilfe da ich selbst mitlerweile am Verzweilfeln bin.

Gruß Lars

Antworten
Christian
  • Forum-Beiträge: 307

30.01.2013, 18:23:13 via Website

Hi Lars,

wenn du dein Programm ausführst geht alles bzw. die Exception wird nicht geworfen?

Hast du mal geschaut ob in "echo" auch das drin steht was drin stehen soll?(also per Debug oder einfache ausgabe)

Ab der Android Version 3.0 müssen Netzwerkaufrufe außerhalb des Main-Thread laufen. Läuft die Funktion "loginGet" in einer seperaten Thread?

Mfg Christian

Lars R.

Antworten
Lars R.
  • Forum-Beiträge: 8

30.01.2013, 19:04:15 via Website

Also exceptions werden keine geworfen.

Ich muss aber ehrlich sein das ich grade auch mit er-googeln nicht in der Lage bin das ganze in einen neuen Thread auszulagern. Da ich mich damit nie beschäftigt habe.

Ich würde mich über Deine Hilfe bezüglich dem Auslagern freuen. (Ich bin einfach mal so dreist und "Duze" hier.

Antworten
Christian
  • Forum-Beiträge: 307

30.01.2013, 20:43:34 via Website

Hi Lars,

ok und wo kommst du nicht weiter?

Hast du dir schon mal die Klasse AsynTask angeschaut?
Ausführliches Beispiel für die Verwendung: RSS Reader Tutorial

Hier im Forum findest du auch sehr viele Beispiele einfach mal suchen.

Mfg Christian

Antworten
Lars R.
  • Forum-Beiträge: 8

30.01.2013, 22:18:05 via Website

Ich versuche das ganze ohen AsyncTask zu regeln.

Also jetzt zum Problem :
Ich habe die einzelne Funktion mal in reinem Java geschrieben(außerhalb der App).

Sieht wie folgt aus klappt auch super :
1package test;
2import java.io.BufferedReader;
3import java.io.IOException;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6import java.net.URL;
7
8public class test {
9 public static void main(String[] args) {
10
11
12 thread t = new thread();
13
14 Thread x = new Thread(t);
15
16 x.start();
17
18 }
19}
20
21class thread implements Runnable
22
23 {
24 public void run()
25 {
26 InputStream is = null;
27
28 try
29 {
30 URL url = new URL( "zensiert" );
31 is = url.openStream();
32 BufferedReader br = new BufferedReader(new InputStreamReader(is));
33 String echo = br.readLine();
34 String lecho = "valid";
35 if (echo.equals(lecho))
36 {
37 System.out.println("Success");
38 }
39
40
41 }
42 catch ( Exception e ) {
43 e.printStackTrace();
44 }
45 finally {
46 if ( is != null )
47 try { is.close(); } catch ( IOException e ) { }
48 }
49 }
50 }

Jetzt ich meine Frage wo ich denn jetzt am besten die Anweisung in der App selbst anbringe den Thread zu erstellen und zu starten ( bei Klick auf Login)
Der Mainactivity.java :
1package com.example.bootercontrol;
2
3import java.io.BufferedReader;
4import java.io.IOException;
5import java.io.InputStream;
6import java.io.InputStreamReader;
7import java.net.URL;
8
9import android.os.AsyncTask;
10import android.os.Bundle;
11import android.app.Activity;
12import android.view.Menu;
13import android.view.View;
14import android.widget.EditText;
15
16public class MainActivity extends Activity {
17
18 @Override
19 protected void onCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.activity_main);
22 }
23
24 @Override
25 public boolean onCreateOptionsMenu(Menu menu) {
26 // Inflate the menu; this adds items to the action bar if it is present.
27 getMenuInflater().inflate(R.menu.activity_main, menu);
28 return true;
29 }
30
31public void Login_Click (View view) {
32 final EditText user = (EditText)findViewById(R.id.editText2);
33 final EditText password = (EditText)findViewById(R.id.editText1);
34
35
36class url implements Runnable
37
38 {
39 public void run()
40 {
41 InputStream is = null;
42
43 try
44 {
45 URL url = new URL( "zensiert?username="+user+"&password="+password );
46 is = url.openStream();
47 BufferedReader br = new BufferedReader(new InputStreamReader(is));
48 String echo = br.readLine();
49 String lecho = "valid";
50 if (echo.equals(lecho))
51 {
52 finish();
53 }
54
55
56 }
57 catch ( Exception e ) {
58 e.printStackTrace();
59 }
60 finally {
61 if ( is != null )
62 try { is.close(); } catch ( IOException e ) { }
63 }
64 }
65 }
66 }
67
68
69
70
71
72
73
74
75public void Abort_click (View view)
76{
77 finish();
78}
79}

— geändert am 31.01.2013, 18:09:10

Antworten