Wie kann ich eine einfache HTTP-Anfrage in MainActivity.java? (Android Studio)
Bin ich mit Android Studio, und ich verbrachte ein paar Stunden mit dem Versuch zu tun, eine einfache HTTP-Anfrage in meinem MainActivity.java Datei, und versuchten mehrere Wege, und gesehen, dass viele web-Seiten zu dem Thema, noch nicht, es herauszufinden.
Wenn ich versuche, OkHttp, bekomme ich eine Fehlermeldung über die nicht in der Lage, es zu tun auf dem Haupt-thread. Jetzt versuche ich, es zu tun auf diese Weise:
public static String getUrlContent(String sUrl) throws Exception {
URL url = new URL(sUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String content = "", line;
while ((line = rd.readLine()) != null) {
content += line + "\n";
}
return content;
}
Ich diese Methode direkt in MainActivity.java und mein click-Ereignis ausgeführt, das aus einer anderen Methode, die auch in MainActivity.java:
try {
String str = getUrlContent("https://example.com/WAN_IP.php");
displayMessage(str);
}
catch(Exception e){
displayMessage(e.getMessage());
}
Aber jetzt gibt es keinen crash, und ich kann sagen, es ist eine Ausnahme geworfen auf die Zeile, die beginnt "BufferedReader", aber e.getMessage() leer ist.
Ich bin ganz neu in Android Studio und java, also bitte so freundlich sein und mir helfen, mit dieser sehr grundsätzlichen problem. Schließlich werde ich tun müssen, um post-requests an den server, und es scheint, dass OkHttp ist der beste Weg zu gehen, aber ich bin nicht der Suche nach der "Hallo Welt", OkHttp in Android Studio dokumentiert irgendwo online.
InformationsquelleAutor Brian Gottier | 2016-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht Netzwerk-Anfragen auf dem Haupt-thread. Die Verzögerung ist unberechenbar und könnte es einfrieren der UI.
Android-force, die dieses Verhalten durch das werfen eine Ausnahme, wenn Sie die
HttpUrlConnection
Objekt aus dem Haupt-thread.Sollten Sie dann Ihr Netzwerk verlangen in den hintergrund, und aktualisieren Sie dann die Benutzeroberfläche auf dem Haupt-thread. Die
AsyncTask
Klasse kann sehr praktisch sein für diesen Anwendungsfall !Und Sie beginnen, diesen Prozess auf diese Weise:
Bitte schlagen Sie vor, ein edit für die Korrektur 🙂
InformationsquelleAutor Nicolas Dusart
Werfen Sie einen Blick auf diese Antwort. Es ist nicht möglich, offene HTTP-Verbindung in den main-thread (und das ist, warum Sie haben diese erste Fehler) und mit
AsyncTask
ist eine gute Art des Umgangs mit dieserInformationsquelleAutor Agata Cieplik
wenn Ihr mit okhttp dann rufen Sie aysnc versuchen Balg-code
InformationsquelleAutor Chayon Ahmed