1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Encodingprobleme in java in verbindung mit dem Apatche Http Client

Dieses Thema im Forum "Support & Discussion" wurde erstellt von susesKaninchen, 24. September 2017.

  1. susesKaninchen

    susesKaninchen New Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    22
    Zustimmungen:
    13
    Punkte für Erfolge:
    3
    Hallo, ich habe ein Programm welches aus einer txt etwas außlesen soll und dann in einem Post senden soll, leider klappt das nicht richtig.
    Die txt beinhaltet:
    ιcн вιη Peter

    Das was raus kommt ist:
    ιcн вιη

    Gut also ist das encoding falsch.

    Hier meine benutzen Code sachen.

    (eingekürtzt)
    Code (Java):
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    import java.util.regex.MatchResult;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class TextBearbeitung {
        private String text = "";
        private Random r = new Random();

        public String getText() {
            return text;
        }
        public void readTextFile(String pfad) {
            try {
                File fileDir = new File(pfad);
                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileDir), "UTF8"));

                String zeile = "";
                do {
                    zeile = in.readLine();
                    if (zeile == null) {
                        break;
                    }
                    this.text += zeile + "\n";
                } while (zeile != null);
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    Dann das senden mit der funktion:

    Code (Java):
    public String[] POSTSpecialMS(String url, String post) throws IOException {
            String[] ret = new String[2];
            ret[0] = "";
            final HttpPost Post = new HttpPost(url);
            StringEntity params = new StringEntity(post, "UTF-8");
            params.setContentType("application/x-www-form-urlencoded");
            Post.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
            Post.addHeader("Accept-Encoding", "gzip,deflate,br");
            Post.addHeader("Accept-Language", "de-DE");
            Post.addHeader("X-Requested-With", "XMLHttpRequest");
            Post.addHeader("Accept", "application/json, text/javascript, */*; q=0.01");
            Post.addHeader("DNT", "1");

            Post.setEntity(params);
            final HttpResponse response = this.client.execute(Post);
            Header[] s = response.getAllHeaders();
            try {
                for (Header b : s) {
                    ret[0] += b.toString() + "\n";
                    // System.out.println(b.toString());
                }
            } catch (Exception e) {
                ret[0] = "";
            }
            final BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            final StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = rd.readLine()) != null) {
                sb.append(line);
            }
    Dazwischen wird der Text übergeben mit:

    Code (Java):
    public boolean senden(String ID, String Message) {
            try {
                HttpB.FileWrite(client.GET(domain + "/ajax/messages?id_user_sender=" + ID), "SendenVorbereiten");
                Thread.sleep(Message.length() * 200);
                System.out.println(
                        "Warte " + ((Message.length() * 200) / 1000) + " Sekunden bis die nachricht abgesendet wird.");
                String[] response = client.POSTSpecialMS(domain + "/ajax/addmessage",
                        "id_user=" + ID + "&message=" + Message + "&mobile_phone=");
                HttpB.FileWrite(response[1], "Senden");
                if (response[1].contains("return\":true")) {
                    return true;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            return false;
        }
     
  2. susesKaninchen

    susesKaninchen New Member

    Registriert seit:
    3. Juli 2017
    Beiträge:
    22
    Zustimmungen:
    13
    Punkte für Erfolge:
    3
    Ok erledigt, der code so funktioniert 100% wenn man es in der console außgeben lassen will sollte man eclips umstellen indem mann auf
    Window
    Preferences
    General
    Workspace
    und dann ganz unten von Cp1252 auf UTF-8 stellen

    Mein fehler war das ich eine identische Einleserutine includiert hatte auß einem anderen Projekt
     

Diese Seite empfehlen

Die Seite wird geladen...