1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. MetBo, 26.09.2010 #1
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Hallo

    ich versuche gerade aus meiner App ein Post von einer Website auszuführen ...

    Webseite: Free SMS ohne Anmeldung kostenlos versenden

    Mein Javacode:
    Code:
    private boolean postData(String empfaenger, String nachricht, String sicherheitscode) {
            HttpClient httpClient = new DefaultHttpClient();  
            HttpPost httpPost = new HttpPost("http://www.mufa.de/free-sms.html");  
          
            try {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("sms_size", "160"));
                nameValuePairs.add(new BasicNameValuePair("sms_recipients", empfaenger));
                nameValuePairs.add(new BasicNameValuePair("sms_text", nachricht));  
                nameValuePairs.add(new BasicNameValuePair("recaptcha_response_field", sicherheitscode));
    //            nameValuePairs.add(new BasicNameValuePair("recaptcha_challenge_field", "03AHJ_VuvjP9QILTCN7rsoulyd2LXSY24jCPgjmGlel8JY_3baYNL8jbyzPJqUxEGAyGpDDfo3erOmjQRjY7pISTbOCnhKt3QXYtI9sKjBnUPJeO5L-ZuBx9YJf4tVXktEYfY34LfgjVWnv2IGIR6QPxAk0JdqLtjHmQ"));
                UrlEncodedFormEntity ent = new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8);
                httpPost.setEntity(ent);
                HttpResponse responsePOST = httpClient.execute(httpPost);  
                HttpEntity resEntity = responsePOST.getEntity();  
                
    //            BufferedReader in = new BufferedReader(new InputStreamReader(responsePOST.getEntity().getContent()));
    //            StringBuffer sb = new StringBuffer("");
    //            String line = "";
    //            String NL = System.getProperty("line.separator");
    //            while ((line = in.readLine()) != null) {
    //                sb.append(line + NL);
    //            }
    //            in.close();
    //            String result = sb.toString();
    //            System.out.println(result);
    //            
                return true;
            } catch (ClientProtocolException e) {  
                return false;
            } catch (IOException e) {  
                return false;  
            }  
        }
    Leider funktioniert das nicht ... :( Das Captcha kann ich erfolgreich in meiner App anzeigen lassen ... Nur das senden (post) funktioniert nicht.

    Könnte mal jemand darüber gucken und sich auch mal den Quelltext der Seite anschauen?

    Wäre echt cool, ich verzweifel hier voll ...

    Vielen Dank
     
  2. Unicate, 27.09.2010 #2
    Unicate

    Unicate Android-Experte

    Ist der request auch Richtig?
    Sendest du alle vom Server erwarteten Parameter?

    Um das zu prüfen sei hier mal wireshark genannt.
    Dann baust du dir nen "Spielserver". Ein Server der alles annimmt und irgendetwas zurück gibt (200 OK wäre in deinem fall das richtige)

    So kannst du überprüfen ob du auch das sendest was du musst.

    Ich hab mal so einen Testserver geschrieben und mit angehängt.
     

    Anhänge:

  3. MetBo, 27.09.2010 #3
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Vielen dank,

    ich werde es mal ausprobieren, aber würde es nicht reichen, wenn ich im Javacode einfach die StatusLine des Request auf 200 abfrage? Das dürfte doch eigentlich genügen, oder?

    Oder kann es vielleicht an dem Captcha liegen? Die Seite bezieht das Captcha von Google. Kann ich das Captcha einfach immer wieder neu laden, oder wird das z.B. in den Sessions gespeichert und somit geschützt?

    Mich wundert es ja, dass er keine Exception schmeißt, wenn es nicht klappt.

    EDIT: Oder muss ich vielleicht den Content-Type beim Post mitübergeben?
     
    Zuletzt bearbeitet: 27.09.2010
  4. FelixL, 27.09.2010 #4
    FelixL

    FelixL Ehrenmitglied

    Ich dachte es liegt vielleicht an den Cookies, hab die gerade mal probeweise gelöscht bevor ich auf senden gegangen bin... hat trotzdem funktioniert. Viel Glück noch ;)
     
  5. MetBo, 27.09.2010 #5
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Ja danke, wäre echt schon komisch gewesen, wenn es an den Cookies liegt ...

    Oder kann ich vielleicht nicht auf die Website so draufzugreifen? Können solche Webseiten, solche Apps blocken?

    So ein einfaches Programm und ich verzeifeln bei der sch**ß Post übergabe -.-
     
  6. Unicate, 27.09.2010 #6
    Unicate

    Unicate Android-Experte

    Versuch doch mal folgendes:


    • Wirf den Wireshark an um die Pakete zu capturen (Filter: http).
    • Dann geh auf die Webseite und sende mal eine SMS
    • Schau die im Wireshark an was dort rauskommt (POST)
    • Dann versuch das nachzubauen indem du die Headerparameter weitestgehend übernimmst
    Dann sollte das ganze funktionieren.
    Du kannst zu testzwecken ja einfach alles übernehmen (User-Agent etc.) damit du evtl. User-Agent begrenzungen umgehst.

    Dann wirfst du den Testserver an und schaust ob die Header die gleichen sind. (ausgenommen evtl SessionId's etc.)
     
    FelixL gefällt das.
  7. MetBo, 27.09.2010 #7
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Ok danke, werde ich später mal ausprobieren
     
  8. FelixL, 27.09.2010 #8
    FelixL

    FelixL Ehrenmitglied

    @Unicate: Hört sich sehr gut an das Programm, ist sicher mal nützlich.
     
  9. MetBo, 27.09.2010 #9
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Ja wireshark ist ganz nett, nutzen wir in der Schule zum Untersuchen der Netzwerkkarte auch. Schon interessant, was für Daten über die karte laufen
     
  10. BenOtto, 27.09.2010 #10
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Captchas sind ne eklige sache... die werden meist asynchron (ajax o.Ä.) nachgeladen, um zu unterbinden, dass die Eingabe automatisch geschieht.
    Hab zwar deinen Post nicht gelesen, wollte aber mal meinen Senf dazugeben =)
     
  11. MetBo, 27.09.2010 #11
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Also ich habe jetzt alle Parameter und Headerinfos nachgebaut, bringt mich trotzdem leider nicht weiter :(, oder ich blicke da einfach nicht durch ...

    Die SMS wird einfach nicht versendet. Anscheinend liegt es am Captcha.

    Mag sich nicht mal wer den html Quelltext der Seite anschauen und einen Vorschlag machen? Ich finde dort leider nichts passendes

    Folgendes steht bei Wireshark:
     
  12. Unicate, 28.09.2010 #12
    Unicate

    Unicate Android-Experte

    Poste mal bitte den kompletten header aus dem Wireshark und den Header den du in der app sendest (benutze dazu den TestServer)

    Hast du evtl. das "[truncated]" mit in deinen Header übernommen? Das ist nur vom Wireshark ;)
     
    Zuletzt bearbeitet: 28.09.2010
  13. MetBo, 28.09.2010 #13
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Ich werde später den Code posten. Nein habe ich nicht, soo doof bin ich nun auch nicht ;-)

    Ich glaube wohl eher es liegt an dem Captcha. Gibt es da nicht eine Möglichkeit das Captcha zu umgehen?
     
  14. Unicate, 28.09.2010 #14
    Unicate

    Unicate Android-Experte

    Du könntest die mal den Code für den Captcha-Recognizer im JDownloader ansehen. Der Code ist offen.

    Direkt umgehen geht aber nicht. Dafür sind die Dinger ja da.

    Ich kann mir aber gerade auch nicht vorstellen, was mit dem Captcha nicht gehen soll.
    Das Bild bekommst du auf's Telefon? Wenn du das Bild auf's Telefon bekommst und der User den Code eingibt, sollte es da gar keine Schwierigkeiten geben.

    Nimmst du eigentlich das "recaptcha_challenge_field" mit?
    Ich glaube das solltest du.

    Ich nehm mal an das geht so:

    Wenn eine anfrage bei deren Server reinkommt wir ein Captcha-Field erzeugt und dieses mit einer eindeutigen ID (dem captcha_challange_field)
    Wenn die richtige Antwort mit der dazugehörigen ID zurückkommt, wird die SMS versandt, ansonsten halt nicht
     
    Zuletzt bearbeitet: 28.09.2010
  15. MetBo, 28.09.2010 #15
    MetBo

    MetBo Threadstarter Fortgeschrittenes Mitglied

    Ich schicke dir später mal meinen gesamten Code, macht wohl mehr Sinn, als wenn ich dir hier alles nur bruchweise zeige.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] ClickListener in ViewPager (dynamischer Seitenaufruf) Android App Entwicklung 09.04.2017
[RÜCKMELDUNG FEHLT] Text und Bilder in View einbinden Android App Entwicklung 26.03.2017
Du betrachtest das Thema "html post ausführen" im Forum "Android App Entwicklung",