1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Rückgabe von HttpRequest mit ProgressDialog

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von h00ligan, 27.04.2012.

  1. h00ligan, 27.04.2012 #1
    h00ligan

    h00ligan Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    22.03.2012
    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
     
  2. swordi, 27.04.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
  3. h00ligan, 27.04.2012 #3
    h00ligan

    h00ligan Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    22.03.2012
    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 :(
     
  4. swordi, 27.04.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
  5. h00ligan, 27.04.2012 #5
    h00ligan

    h00ligan Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    22.03.2012
    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
     
  6. swordi, 27.04.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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.
     

Diese Seite empfehlen