String aus URL vergleichen schlägt fehl
lima-city → Forum → Programmiersprachen → Java
-
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Vesuch's mal mit
oders.equals("ok")
"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 -
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 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage