Richten Sie einen lokalen Server mit Go-File-Download ein.

zunaechst

Stellen Sie eine Anfrage über die Android-App und laden Sie die Datei auf den lokalen Server herunter, auf dem Sie WebServer mit Go eingerichtet haben

Umgebung

PC Windows10 Android Studio 4.0 Kotlin 1.3.72 Android Terminal Emulator (API Level 29) Go 1.11.1

Diagramm

go_server.png Geben Sie den Dateinamen in der Android-App an, fordern Sie ihn auf der Serverseite an, geben Sie die auf der Serverseite gespeicherte Datei und den Statuscode zurück

Implementierung

Lokaler Server

Server.go


package controllers

import (
    "fmt"
	"io/ioutil"
	"net/http"
	"os"
	"strconv"
	"strings"
)

func apiSampleHandler(w http.ResponseWriter, r *http.Request) {
	switch r.Method {
	case "POST":
		fmt.Println("POST")
	case "GET":                                        //Datei DL mit GET-Anfrage
		fmt.Println("GET")
		name := fmt.Sprint(r.URL)                      // 「/Holen Sie sich "Dateiname"
		fileName := strings.SplitAfter(name, "/")[1]   //Holen Sie sich "Dateiname"
        //Überprüfen Sie, ob die Datei auf der Serverseite vorhanden ist
		if fileinfo, err := os.Stat("./" + fileName); os.IsNotExist(err) || fileinfo.IsDir() {
			fmt.Println("file is not exist")
			w.WriteHeader(http.StatusNotFound)
			return
		}
		buf, err := ioutil.ReadFile("./" + fileName)   //Datei lesen
		if err != nil {
			fmt.Println("file could not be read")
			w.WriteHeader(http.StatusInternalServerError)
			return
		}
		w.Write(buf)                                   //Schreiben Sie auf die Antwort
	}
	w.WriteHeader(http.StatusOK)
}

// main.Rufen Sie von go an, um den Server zu starten
func StartWebServer() error {
	http.HandleFunc("/", apiSampleHandler)
	return http.ListenAndServe(":8080", nil)
}

Führen Sie main.go aus und starten Sie den Server Gehen Sie zu http: // localhost: 8080 und stellen Sie sicher, dass der Server aktiv ist

Bereiten Sie die Datei vor

image.png Legen Sie die Datei zum Herunterladen im selben Verzeichnis wie main.go ab

Android App

1.Androidmanifest.xml

Definieren Sie die Berechtigung zum Zugriff auf das Internet

AndroidManifest.xml


<uses-permission android:name="android.permission.INTERNET" />

Da die http-Kommunikationseinstellung von Android 9.0 deaktiviert ist, setzen Sie `` `usedCleartextTrafic``` auf true

AndroidManifest.xml


<application
Kürzung
    android:usesCleartextTraffic="true">
    <activity android:name=".MainActivity">
Kürzung
    </activity>
</application>
  1. Serverzugriff

GET Zugriff auf Server über http-Kommunikation

Net.kt


   fun requestFileDownload(context: Context, requestUrl: String, fileName: String): Int {
        val url = URL("$requestUrl/$fileName.txt")     //Generierung von URL-Objekten
        //UrlConnection-Objekterstellung
        val urlConnection = url.openConnection() as HttpURLConnection 
        var result = ""
        var responseCode = 0
        try {
            urlConnection.requestMethod = "GET"         // POST,GET etc.
            urlConnection.doInput = true                //Antwortkörper empfangen
            urlConnection.useCaches = false             //Verwendung des Cache
            urlConnection.connect()                     //Stellen Sie eine Verbindung her

            responseCode = urlConnection.responseCode   //Antwortcode abrufen
            when (responseCode) {
                HttpURLConnection.HTTP_OK -> {          //Wird nur verarbeitet, wenn der Antwortcode 200 lautet: OK
                    val path = context.filesDir.toString() + "/" + fileName + FILE_EXPAND
                    //Lesen Sie den Inhalt der Antwort
                    DataInputStream(urlConnection.inputStream).use { fileInputStream ->
                        //Erstellen und schreiben Sie eine Datei
                        DataOutputStream(BufferedOutputStream(FileOutputStream(path))).use {
                            val buffer = ByteArray(BUFFER_SIZE)
                            var byteRead: Int
                            do {
                                byteRead = fileInputStream.read(buffer)
                                if (byteRead == -1) {
                                    break
                                }
                                it.write(buffer, 0, byteRead)
                            } while (true)
                        }
                    }
                }
            }
        } catch (e: Exception) {
            Log.e("Net", "#startConnection$e")
        } finally {
            urlConnection.disconnect()
        }
        return responseCode
    }
}
    1. Bestätigung der IP-Adresse

Bestätigen Sie die IP-Adresse des Servers (PCs), auf den Sie zugreifen möchten, indem Sie an der Eingabeaufforderung Folgendes ausführen

>ipconfig

Vier. Verbinden Sie PC und Android-Gerät mit derselben Netzwerkumgebung

Fünf. Verbinde dich mit Android

Setzen Sie http: // {bestätigte IP-Adresse}: 8080 in requestUrl von Net # requestFileDownload Legen Sie den Dateinamen, der heruntergeladen werden soll, in Dateiname von Net # requestFileDownload fest und führen Sie ihn aus

Bestätigen Sie den Dateidownload

Stellen Sie sicher, dass die Datei im anwendungsspezifischen Bereich generiert wird (unter `` `/ data / data / {Paketname} / files```). Zeigen Sie Dateien auf dem Gerät mit dem Gerätedateie-Explorer an (https://developer.android.com/studio/debug/device-file-explorer?hl=ja) )

Schließlich

Die gesamte Quelle ist hier Das Zugriffsziel, RequestMethod und der Dateiname können in der App dynamisch geändert werden.

Klicken Sie hier, um Dateien auf den Server hochzuladen (https://qiita.com/kurramkurram/items/262cd1d2f01dcb6fa8bd).

Verweise

Gehen Sie zur Serverseite

Package http Überprüfen Sie, ob Dateien und Verzeichnisse in Go-Sprache (Golang) vorhanden sind [Golang] Beispiel zum Lesen von Dateien

Android App Seite

Herunterladen und Speichern einer Datei über HTTP in Java

Recommended Posts

Richten Sie einen lokalen Server mit Go-File-Download ein.
Richten Sie einen lokalen Server mit Go-File-Upload ein.
Richten Sie mit Docker einen Samba-Server ein
Richten Sie einen einfachen HTTPS-Server mit Asyncio ein
So richten Sie einen lokalen Entwicklungsserver ein
Richten Sie einen einfachen lokalen Server auf Ihrem Mac ein
[Vagrant] Richten Sie einen einfachen API-Server mit Python ein
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Richten Sie mit Twisted einen Mailserver ein
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Richten Sie einen Test-SMTP-Server in Python ein.
Richten Sie einen UDP-Server in der Sprache C ein
Richten Sie mit http.server in Python 3 in 30 Sekunden einen lokalen Webserver ein
Richten Sie einen einfachen SMTP-Server in Python ein
Lokaler Server mit Python
Richten Sie einen Minecraft-Ressourcenserver (Spigot) über Docker (2) ein.
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
[Teil 1] Lassen Sie uns einen Micra-Server unter Linux einrichten
Richten Sie einen Minecraft-Ressourcenserver (Spigot) über Docker ein
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
Richten Sie eine Python-Entwicklungsumgebung mit Visual Studio Code ein
Laden Sie den mit Gunicorn eingerichteten Server neu, wenn Sie den Code ändern
Richten Sie mit Django ein soziales Login ein
Erstellen eines Flask-Servers mit Docker
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
Zeichnen Sie ein Mandelbrot-Set mit Brainf * ck
Richten Sie mit CentOS Linux 8 + Apache mod_ssl einen Reverse-Proxy für den https-Server ein
Einführung und Verwendung der Python-Flasche ・ Versuchen Sie, einen einfachen Webserver mit Anmeldefunktion einzurichten
Richten Sie einen Server ein, der mehrere Verbindungen gleichzeitig verarbeitet
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Starten Sie einen temporären http-Server lokal mit Pytest
Starten Sie mit Docker einen einfachen Python-Webserver
Spielen Sie den Server mit zwei PCs
Starten Sie einen Webserver mit Python und Flask
Richten Sie eine Python-Entwicklungsumgebung auf Marvericks ein
Hängen Sie das Verzeichnis eines anderen Servers mit sshfs ein
Erstellen Sie in Tornado einen HTTP-Server (Hello World)
So bereiten Sie die Umgebung mit Courseras fortgeschrittenem Kurs für maschinelles Lernen auf Google Colab vor
Richten Sie einen Dateiserver mit Samba mit ZeroPi von Friendly Arm ein [Betriebssysteminstallation]
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
Ich möchte mit swagger-codegen in Sekundenschnelle einen Mock-Server für Python-Flask einrichten.
Richten Sie mit samba einen Dateiserver mit ZeroPi von Friendly Arm ein [Gekaufte Artikel]
Richten Sie mit samba einen Dateiserver mit ZeroPi von Friendly Arm ein [Persönlicher Import]
Erstellen Sie mit Python + Flask einen animierten lokalen GIF-Server
Richten Sie eine Entwicklungsumgebung für die Verarbeitung natürlicher Sprache ein
So richten Sie eine Python-Umgebung mit pyenv ein
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Die Geschichte, eine harte Zeit mit der gemeinsamen Menge HTTP_PROXY = ~ zu haben
Richten Sie Docker unter Oracle Linux (7.x) mit Vagrant ein
Ein Server, der POST-Daten mit flask / python wiedergibt
Erstellen Sie einen Home Music Server mit Centos8 + Universal Media Server
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Hinweise zur Beschleunigung des Python-Codes mit Numba
Starten Sie Django auf einem Docker-Container mit Docker-Compose Up
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
Ich möchte eine lokale Variable mit Lambda binden
Wenn es schwierig ist, beim Senden von E-Mails mit Python lokal einen SMTP-Server einzurichten.