Rückgabe von HttpRequest mit ProgressDialog

H

h00ligan

Neues Mitglied
0
Hey Leute :)

Ich habe im Netz ein Script gefunden, welches einen ProgressDialog anzeigt während ein HttpRequest ausgeführt wird.

Leider möchte ich gerne beim Aufruf der Funktion "grabURL();" die Rückgabe direkt in einem String speichern, also folgendermaßen:
Code:
String httpContent = grabURL("http://www.google.de");

Leider kriege ich nicht raus, wie ich den Code ändern muss, um das zu erreichen...
Hier mal der Code:
Code:
public void grabURL(String url) {
        new GrabURL().execute(url);
    }
    
    private class GrabURL extends AsyncTask<String, Void, Void> {
        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = new ProgressDialog(Main.this);
        
        protected void onPreExecute() {
            Dialog.setMessage("Lade Daten...");
            Dialog.show();
        }

        protected Void doInBackground(String... urls) {
            try {
                HttpGet httpget = new HttpGet(urls[0]);
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                Content = Client.execute(httpget, responseHandler);
            } catch (ClientProtocolException e) {
                Error = e.getMessage();
                cancel(true);
            } catch (IOException e) {
                Error = e.getMessage();
                cancel(true);
            }
            return null;
        }
        
        protected void onPostExecute(Void unused) {
            Dialog.dismiss();
            if (Error != null) {
                Toast.makeText(Main.this, Error, Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(Main.this, "Source: " + Content, Toast.LENGTH_LONG).show();
            }
        }   
    }


EDIT //
Hier noch der Link zur Seite von welcher ich den Code habe: http://www.androidsnippets.com/grab-a-url-source-with-progressdialog-and-asynctask
 
hmm ich denke es wäre sinnvoll java zu lernen - und dann mit android weiter zu machen.

es macht keinen sinn code von irgendwo zu kopieren, wenn man nicht genau weiß, was er tut.

wenn du java kannst und weißt was du da so kopiert hast, dann fällts dir auch leicht modifikationen zu machen, die immer nötig sind
 
Ich arbeite ehrlich gesagt nach dem Prinzip: Learning by Doing

und damit bin ich bisher eigentlich ganz gut gefahren.
Ich brauche für solche "Code-Schnipsel" halt nur eine Erklärung bzw eine kleine Hilfestellung und schon läuft das ganze.

Auf diese Art und Weise habe ich es jetzt innerhalb von ca. 2 Wochen von jemandem der keine Ahnung von Java hat zu jemandem gewandelt, der 2 Android-Apps gebastelt hat.

Deswegen ist dein Beitrag so gesehen wenig hilfreich :(
 
spricht nichts dagegen.

aber ein bisschen java grundverständnis muss man einfach haben. es nützt nix.


zum problem

du kannst die rückgabe nicht direkt in einen string speichern, da du netzwerk anfragen in einem thread machen musst. das dauert eben länger.
deshalb der asynctask - aus diesem kannst du den wert rausnehmen und hast alles was du brauchst
 
aber wie komme ich denn an den wert ran, den die funktion/der task generiert?

gibt es eine möglichkeit zu prüfen, ob der task abgeschlossen ist?

dann würde ich "grabURL(...)" aufrufen und warten bis der task abgeschlossen ist
danach könnte ich mir dann die daten aus der klasse holen
 
tja genau das meinte ich ja mit "du sollst den code auch verstehen können, den du da zusammen kopierst"

schau dir an, was ein asynctask ist und wie dieser arbeitet. dann beantworten sich deine fragen.
 

Ähnliche Themen

S
Antworten
17
Aufrufe
550
jogimuc
J
B
Antworten
4
Aufrufe
469
bb321
B
5
Antworten
22
Aufrufe
1.411
590239
5
Zurück
Oben Unten