kostenloser Webspace werbefrei: lima-city


String aus URL vergleichen schlägt fehl

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    na-web

    na-web hat kostenlosen Webspace.

    Hi liebe Community
    Ich habe wiedermal ein Problem. Und zwar möchte ich ganz einfach den Inhalt einer URL auslesen und sofern sie "ok" zurückgibt weiteren Code ausführen. Allerdings führt dies nicht zum gewünschten Resultat und ich finde nicht heraus wieso.

    Der Code lautet wie folgt:
    Innerhalb der onCreate Methode:
    Button btn = findViewById(R.id.connect_btn);
            final EditText serverNameETXT = findViewById(R.id.server_name);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String serverName = serverNameETXT.getText().toString();
                    new HTTPConnection() {
                        @Override
                        protected void onPostExecute(String s) {
                            super.onPostExecute(s);
                            if(s == "ok") System.out.println("Status ok");
                        }
                    }.execute(serverName);
                }
            });

    Und die Klasse HTTPConnection:
    package com.nf.photosync;
    
    import android.os.AsyncTask;
    import java.net.URL;
    import java.util.Scanner;
    
    public class HTTPConnection extends AsyncTask<String, Integer, String> {
        @Override
        protected String doInBackground(String... params) {
            try {
                String out = new Scanner(new URL(params[0]).openStream(), "UTF-8").useDelimiter("\\A").next();
                return out.trim();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "";
        }
    }

    Der Inhalt der aufgerufenen Datei lautet nur "ok".
    Wenn ich folgenden Code ausführe erziele ich die Ausgabe "ok" (diesmal mit Anführungs- und Schlusszeichen):
    System.out.println("\"" + s + "\"");

    Also müsste der String doch ok enthalten. Vergleiche ich ihn aber mit ok gibt dies false zurück. Weiss jemand was ich falsch mache?
    Ich verstehe die Welt nicht mehr.

    Vielen Dank für eure Hilfe ich kann sie wahrlich gebrauchen.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    Vesuch's mal mit
    s.equals("ok")
    oder
    "ok".compareTo(s) == 0


    "==" verlgeicht Referenzen, die in deinem Fall nicht identisch sind, da es sich um zwei verschiedene String Objekte handelt.

    Wenn der Inhalt nicht relevant ist, könntest du auch auf den HTTP-Statuscode 200 gehen. Sprich: Header-Fields aus der Response auslesen und auf 200 überprüfen.

    Kleiner Tipp noch am Rande: Für eclipse gibt's "SonarLint" gratis. Das weist dich auf solche Probleme hin.

    Beitrag zuletzt geändert: 4.10.2020 0:24:50 von schrotti12
  4. Autor dieses Themas

    na-web

    na-web hat kostenlosen Webspace.

    Vielen Dank
    Das funktioniert jetzt

    Ich benutze kein Eclipse sondern Android Studio. Gibt es das vielleicht etwas ähnliches das man machen könnte?

    Und es geht nicht nur um den Statuscode, aber trotzdem danke für den Tipp.

    Grüsse
    na-web
  5. na-web schrieb:
    Ich benutze kein Eclipse sondern Android Studio. Gibt es das vielleicht etwas ähnliches das man machen könnte?

    SonarLint gibt es auch für Android Studio: https://plugins.jetbrains.com/plugin/7973-sonarlint

    Beitrag zuletzt geändert: 9.10.2020 17:59:22 von webfreclan
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!