kleines response problem

  • 23 Antworten
  • Letztes Antwortdatum
S

shortax

Neues Mitglied
0
Guten Morgen zusammen :p

Ich mache eine abfrage an eine asp-Seite was auch alles super funktioniert, nur das was ich denn zurückbekomme ist der Quelltext des Loginbereichs der Website. Und das möchte ich nicht im TextView sondern im WebView anzeigen lassen. Hoffe das ist so einigermaßen verständlich:rolleyes2:

MfG
 
Hi,

ich weiß nicht genau was du suchst, aber das sollte dich schon mal weiterbringen:
WebView | Android Developers

und
// OR, you can also load from an HTML string:
String summary = "<html><body>You scored <b>192</b> points.</body></html>";
webview.loadData(summary, "text/html", null);
 
jaaa^^ das mit dem load from html string hab ich auch schon probiert und ich denke das ist auch das richtige, nur weis ich nicht was und wie ich das einsetzen soll.. schuldigung bin auch recht neu auf dem gebiet :) ich setz einfach mal die activity rein, denn ist das eventuell leichter.
Code:
public void postLoginData() {
        
        HttpClient httpclient = new DefaultHttpClient();
        
        HttpPost httppost = new HttpPost("http://www.example.com/login.asp");
        
    
        try {
            
            EditText uname = (EditText)findViewById(R.id.username);
            String username = uname.getText().toString();
            
            EditText pword = (EditText)findViewById(R.id.password);
            String password = pword.getText().toString();
            
            
            
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("user", username));
            nameValuePairs.add(new BasicNameValuePair("pass", password));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            
            
            
            HttpResponse response = httpclient.execute(httppost);
            Log.w("Conet","Execute HTTP Post Request");
            
            String str = inputStreamToString(response.getEntity().getContent()).toString();
            Log.w("Conet", str);
            
            if(username.equalsIgnoreCase("") && password.equalsIgnoreCase(""))
            {
                
                
                Log.w("Conet", "FALSE");
                result.setText("Login fehlgeschlagen!");
            }else
            {
                Log.w("Conet", "TRUE");
                result.setText(str);
            
            }
            
            
            
            
        } catch (ClientProtocolException e){
            e.printStackTrace();
        } catch (IOException e){
            e.printStackTrace();
        }
        
        
    }
    
    private StringBuilder inputStreamToString(InputStream is) {
        String line = ""; 
        StringBuilder total = new StringBuilder();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        
        try {
            while ((line = rd.readLine()) != null){
                    total.append(line);
            }
            
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    
            return total;
    
    }
            
    @Override
    public void onClick(View v) {
        if(v == anmelden) {
            postLoginData();                
                
        
        
        }
                    
    }


Der ursprüngliche Beitrag von 10:43 Uhr wurde um 11:27 Uhr ergänzt:

Wie gesagt im LogCat wird mir der komplette Code der Seite angezeigt und in der App als TextView aber ich möchte den Code ja garnicht, sondern einfach nur die website :D
 
Zuletzt bearbeitet von einem Moderator:
Du willst dich bei deiner App über ein WebView anmelden, damit du danach dann den Quelltext runterladen kannst?
(Weil du dich ja angemeldet hast und dein session ist gespeichert?)
Sehe ich das richtig so?!

Ich bezweifle das das funktioniert. Da du in deinem WebView zwar dann die Session Daten gespeichert hast, diese aber quasi an dein HttpClient (btw solltest du HTTPUrlConnection verwenden) ebenfalls die Daten braucht. Wie der daran kommt weiß ich nicht :) Bzw. da müsstest du suchen..

Gruß
 
Ich bin ja schon eingeloggt das seh ich weil im quelltext private daten von mir stehen.
Zudem muss ich sagen macht die asp-seite das so, es wird der username und das passwort gesendet, wenn es stimmt gibt sie OK zurück und geht über auf die nächste asp-seite(die ich nur als quelltext sehe) und da bin ich eingeloggt. und die möchte ich nun nur als richtige website sehen.^^

immer nicht so leicht sowas zu erläutern..
 
Wenn ich das richtig sehe, willst du dich nicht über das login formular anmelden sondern mit android boardmitteln.

prinzipiell natürlich kein problem.
Wenn du danach aber sowieso die webseite anzeigen willst, warum zeigst du das login formular nicht von vorne rein auch in einer webview.

Oder aber du musst hingehen und die login erfolgreich seite per hand parsen.

Ich versteh halt noch nicht genau was du vorhast.
und wie es nach dem Login weiter gehen soll.
 
hier ist das resultat

ENjo9IcrXBcAAAAASUVORK5CYII=


das ist der quelltext des eingeloggten bereichs, möchte aber nachdem ich auf anmelden geclickt habe in einem webview die seite davon sehen.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    41,7 KB · Aufrufe: 266
Und wo ist nun das Problem?
Kardroid hat doch weiter oben beschrieben wie's geht.
Bau eine Webview ein und setze den Content an der Stelle wo du jetzt:
result.setText(str);
machst mit:
webview.loadData(str, "text/html", null);

Entweder machst du das in der gleiche Activity (webview sichtbar machen und die anderen Felder verstecken z.B.) oder aber du sendest das alles an eine 2. Activity mit einer Webview.

Wenn auf dieser Seite aber noch links woanders hin vorhanden sind werden die vermutlich nicht funktioneren, da die Webview nicht in der gleichen Session läuft wie dein Login
 
Mache das so das es zu einer 2. Activity geht, die frage ist wie weis meine webviewactivtiy jetzt was str ist, das muss man ihr ja noch klar machen.. aber wie?

-----------------

habe jetzt bei else result.setText(str); rausgeommen dafür: Intent in = new Intent(LoginActivity.this,webviewActivity.class); startActivity(in); eingesetzt und in der webview activity hab ich das so stehen:
Code:
private WebView webview;
        
    protected void onCreate(Bundle savedInstanceState, String str) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
            setContentView(R.layout.eingeloggt);
                    
            
    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.loadData(str, "text/html", "utf-8");

nun bekomme ich nur eine weiße blanke seite.
 
Zuletzt bearbeitet von einem Moderator:
Du musst dem Intent noch Extras hinzupacken
Intent | Android Developers

Die musst du dann in der onCreate Methode wieder auslesen
getIntent().getExtra("deinExtraname").toString()

Sollte funktionieren (alles ungetestet).
Aber im Prinzip ganz einfach.
 
Könntest du mir in meinem Falle ein beispiel schreiben? wie ich die intent methode umschreiben muss, verstehe das nicht so richtig was auch der developer seite steht..
 
Also grob machst du das so:
Code:
 Intent in = new Intent(LoginActivity.this,webviewActivity.class); 
in.putExtra("str", str)
startActivity(in);

Und in der neuen Acitivity dann:
protected void onCreate(Bundle savedInstanceState, String str) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
            setContentView(R.layout.eingeloggt);
 String content = getIntent().getExtra("str");
 
    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.loadData(content, "text/html", "utf-8");
}
So ungefähr sollte das zumindest funktionieren ansonsten musst du nochmal in die API gucken ob alle Methoden Signaturen so stimmen.
 
Zuletzt bearbeitet von einem Moderator:
Erstmal dankeschön für die Mühe die ihr euch macht! :)

hab das jetzt alles soweit, in der webviewactivity sagt er mir jetzt

getExtra(String) is undefined for the type Intent


hatte das in getStringExtra aber das war wohl auch nicht das richtige..
 
Oh, doch getStringExtra() das müsste das richtige sein.
hab nicht dran gedacht, dass es da ja extra Methoden für gibt.

mit getStringExtra("str") müsstest du eigentlich den Wert bekommen können.

Wobei ich gerade sehe, dass man das package mit angeben sollte.
"The name must include a package prefix, for example the app com.android.contacts would use names like "com.android.contacts.ShowAll"."

Versuchs mal so.
 
also praktisch so in.putExtra("de.conettest.str",str); ?

und in der webviewactivity so String content = getIntent().getStringExtra("de.conettest.str"); ?
 
Ja das sollte eigentlich funktionieren.
Einfach mal probieren.
 
Juup die Seite öffnet er mir jetzt, musste bloß webviewloaddatawithbaseurl nehmen wegen den Umlauten.

Was nun ist das er mir keine Icons(Bilder) anzeigt sprich die Buttons wo man raufdrücken kann.

Und wenn ich auf einen von den drücke geht er ja auf eine andere asp seite aber da sagt er mir denn das die nicht erreichbar ist. Ich weis das ich jetzt die Session irgendwie speichern muss damit ich auf die anderen eingeloggtbereich komme aber wie? ^^
 
shortax schrieb:
Juup die Seite öffnet er mir jetzt, musste bloß webviewloaddatawithbaseurl nehmen wegen den Umlauten.

Was nun ist das er mir keine Icons(Bilder) anzeigt sprich die Buttons wo man raufdrücken kann.

Und wenn ich auf einen von den drücke geht er ja auf eine andere asp seite aber da sagt er mir denn das die nicht erreichbar ist. Ich weis das ich jetzt die Session irgendwie speichern muss damit ich auf die anderen eingeloggtbereich komme aber wie? ^^

Soo habe es hinbekommen die Bilder mitzuladen.
Wie gesagt wenn ich nun einen der vier Buttons drücke(bild im anhang) öffnet er mir den Browser und geht immer auf die indexseite also er nimmt die logindaten nicht mit.

Ihr habt mir bis jetzt schon echt super geholfen!! :)
 

Anhänge

  • Unbenannt5.png
    Unbenannt5.png
    25,4 KB · Aufrufe: 239
Du musst wahrscheinlich noch ein Cookie setzen
CookieManager | Android Developers
Das müsstest du aus deinem ursprünglichen response auslesen können

Wenn du das Cookie dann setzt, dann sollte dein (interner) browser auch die Login Daten behalten.
 
Okayy..^^ Dankeschön dafür aber da weis ich absolut nicht was ich in die loginactivity und in die webviewactivity schreiben muss:D

Tut mir echt leid aber ich bin Anfänger :-/
 
Zurück
Oben Unten