2016-03-28 13 views
-3

Hallo allerseits Ich versuche, einen einfachen HTTP-Anruf zu einem Tomcat Server auf meinem Server von meiner Android App aus zu tun. Der Server führt dann einen bestimmten Befehl auf meiner Website aus. Ich habe eine Schaltfläche erstellt, die, wenn ich darauf klicke, den HTTP-Anruf von der App aus ausführt.Einfacher HTTP-Aufruf ohne Öffnen Browser

Wenn ich den folgenden Ansatz verwende, öffnet es den Browser auf meinem Telefon, um dieses HTTP auszuführen. Ist es möglich, etwas ähnliches zu tun, aber nicht meine App den Browser öffnen ???

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + IP + ":8080/server/run.jsp")); 
startActivity(browserIntent); 

vielen Dank im Voraus: D

+1

Natürlich ist es möglich. Warum sollte es nicht sein? Wenn Sie * irgendetwas * versucht hätten, hätten Sie mindestens drei übliche Wege gefunden, wie Java auf http zugreifen kann. – 323go

+1

Es tut mir leid, ich bin ein Student und neu dazu. Bitte sei nicht gemein! Ich hätte nicht gepostet, wenn ich nicht gesättigt wäre. Ich habe versucht, einen einzigen Ansatz zu verwenden, aber das würde mich dazu zwingen, eine AsyncTask zu verwenden, an der ich leider eine Weile arbeite und die ich nicht in meine App einfügen konnte. Also wollte ich sehen, ob ich das Ding oben ändern könnte und hoffentlich klappt es:/aber nicht den Browser öffnen. – Emil

+1

Dies ist die Zeit, in der Sie tatsächlich etwas arbeiten müssen und etwas lernen müssen. Wenn eine AsyncTask (zusammen mit den vielen Beispielen, die da draußen sind) zu schwierig ist, ist die Programmierung möglicherweise nicht für Sie, oder Sie würden von etwas Nachhilfe profitieren. – 323go

Antwort

0

Natürlich ist es Ihr Browser startet. Ihr Code fordert Android ausdrücklich auf, eine App zu starten, die die URL "anzeigen" kann.

Wenn Sie Ihre App direkt auf die URL zugreifen, verwenden HttpURLConnection statt:

1.Obtain ein neues HttpURLConnection von URL.openConnection() aufrufen und das Ergebnis an HttpURLConnection Gießen.

2.Prepe der Anfrage. Die primäre Eigenschaft einer Anfrage ist ihr URI. Anforderungsheader können auch Metadaten wie Anmeldeinformationen, bevorzugte Inhaltstypen und Sitzungscookies enthalten.

3.Laden Sie einen Anfragetext optional hoch. Instanzen müssen mit setDoOutput (true) konfiguriert werden, wenn sie einen Anfragetext enthalten. Übertragen Sie Daten, indem Sie in den von getOutputStream() zurückgegebenen Stream schreiben.

4.Lesen Sie die Antwort. Antwort-Header enthalten in der Regel Metadaten wie den Inhaltstyp und die Länge des Antworttexts, geänderte Daten und Sitzungscookies. Der Antworttext kann aus dem von getInputStream() zurückgegebenen Stream gelesen werden. Wenn die Antwort keinen Rumpf hat, gibt diese Methode einen leeren Strom zurück.

5.Disconnect. Nachdem der Antworttext gelesen wurde, sollte die HttpURLConnection durch Aufrufen von disconnect() geschlossen werden. Beim Trennen der Verbindung werden die von einer Verbindung gehaltenen Ressourcen freigegeben, sodass sie geschlossen oder wiederverwendet werden können.

+0

Vielen Dank Remy. Ich schätze es.Weißt du, wo ich eine Vorlage finden konnte, um zu erfahren, wie ich diese in meinen Code unter jedem Listener einfüge? – Emil

+0

Ich sehe, sah gerade das Update. Ich werde versuchen, damit zu spielen und sehen, ob es funktioniert: URL URL = neue URL ("http://www.android.com/"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { InputStream in = neuer BufferedInputStream (urlConnection.getInputStream()); LeseStream (in); schließlich { urlConnection.disconnect(); } } – Emil

Verwandte Themen