Configurer un serveur local avec le téléchargement Go-File-

en premier

Faites une demande depuis l'application Android et téléchargez le fichier sur le serveur local sur lequel vous avez configuré WebServer avec Go

environnement

PC Windows10 Android Studio 4.0 Kotlin 1.3.72 Émulateur de terminal Android (niveau d'API 29) Go 1.11.1

Diagramme

go_server.png Spécifiez le nom du fichier depuis l'application Android, demandez au serveur, renvoyez le fichier et le code d'état enregistrés côté serveur

la mise en oeuvre

Serveur local

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":                                        //Fichier DL avec requête GET
		fmt.Println("GET")
		name := fmt.Sprint(r.URL)                      // 「/Obtenez "nom de fichier"
		fileName := strings.SplitAfter(name, "/")[1]   //Obtenez "Nom de fichier"
        //Vérifiez si le fichier existe côté serveur
		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)   //Lire le fichier
		if err != nil {
			fmt.Println("file could not be read")
			w.WriteHeader(http.StatusInternalServerError)
			return
		}
		w.Write(buf)                                   //Ecrire à la réponse
	}
	w.WriteHeader(http.StatusOK)
}

// main.Appel de go pour démarrer le serveur
func StartWebServer() error {
	http.HandleFunc("/", apiSampleHandler)
	return http.ListenAndServe(":8080", nil)
}

Exécutez main.go et démarrez le serveur Accédez à http: // localhost: 8080 et assurez-vous que le serveur est opérationnel

Préparez le dossier

image.png Placez le fichier à télécharger dans le même répertoire que main.go

Application Android

1.Androidmanifest.xml

Définir l'autorisation d'accéder à Internet

AndroidManifest.xml


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

Étant donné que le paramètre de communication http est désactivé depuis Android 9.0, définissez use CleartextTrafic sur true

AndroidManifest.xml


<application
réduction
    android:usesCleartextTraffic="true">
    <activity android:name=".MainActivity">
réduction
    </activity>
</application>
  1. Accès au serveur

OBTENIR l'accès au serveur via la communication http

Net.kt


   fun requestFileDownload(context: Context, requestUrl: String, fileName: String): Int {
        val url = URL("$requestUrl/$fileName.txt")     //Génération d'objets URL
        //Création d'objet UrlConnection
        val urlConnection = url.openConnection() as HttpURLConnection 
        var result = ""
        var responseCode = 0
        try {
            urlConnection.requestMethod = "GET"         // POST,OBTENIR etc.
            urlConnection.doInput = true                //Réception du corps de réponse
            urlConnection.useCaches = false             //Utilisation du cache
            urlConnection.connect()                     //Établir une connexion

            responseCode = urlConnection.responseCode   //Obtenir le code de réponse
            when (responseCode) {
                HttpURLConnection.HTTP_OK -> {          //Traité uniquement lorsque le code de réponse est 200: OK
                    val path = context.filesDir.toString() + "/" + fileName + FILE_EXPAND
                    //Lisez le contenu de la réponse
                    DataInputStream(urlConnection.inputStream).use { fileInputStream ->
                        //Créer et écrire un fichier
                        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. Confirmation de l'adresse IP

Confirmez l'adresse IP du serveur (PC) auquel vous souhaitez accéder en exécutant ce qui suit avec l'invite de commande

>ipconfig

Quatre. Connectez le PC et l'appareil Android au même environnement réseau

Cinq. Connectez-vous avec Android

Définissez http: // {adresse IP confirmée}: 8080 dans requestUrl de Net # requestFileDownload Définissez le nom du fichier à télécharger dans fileName of Net # requestFileDownload et exécutez

Confirmer le téléchargement du fichier

Confirmez que le fichier est généré dans la zone spécifique à l'application (sous / data / data / {package_name} / files```) Affichez les fichiers sur l'appareil avec Device File Explorer (https://developer.android.com/studio/debug/device-file-explorer?hl=ja )

finalement

La source entière est ici La destination d'accès, RequestMethod et le nom du fichier peuvent être modifiés dynamiquement dans l'application.

Cliquez ici pour télécharger des fichiers sur le serveur (https://qiita.com/kurramkurram/items/262cd1d2f01dcb6fa8bd)

Références

Aller côté serveur

Package http Vérifiez l'existence de fichiers et de répertoires en langue Go (golang) [Golang] Exemple de lecture de fichier

Côté application Android

Comment télécharger et enregistrer un fichier avec HTTP en Java

Recommended Posts

Configurer un serveur local avec le téléchargement Go-File-
Configurer un serveur local avec le téléchargement Go-File-
Configurer un serveur Samba avec Docker
Configurer un serveur HTTPS simple avec asyncio
Comment configurer un serveur de développement local
Configurer un serveur local simple sur votre Mac
[Vagrant] Configurer un serveur API simple avec python
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Configurer un serveur de messagerie avec Twisted
Créer un serveur local avec une commande sur une seule ligne [Mac]
Configurez un serveur SMTP de test en Python.
Configurer un serveur UDP en langage C
Configurez un serveur Web local en 30 secondes en utilisant http.server en python 3
Configurer un serveur SMTP simple en Python
Serveur local avec python
Configurer un serveur de ressources Minecraft (Spigot) via docker (2)
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
Configurez un serveur gratuit sur AWS en 30 minutes
[Partie 1] Configurons un serveur Micra sur Linux
Configurer un serveur de ressources Minecraft (Spigot) via docker
Configurer un environnement de développement Python avec Sublime Text 2
Configurer un environnement de développement Python avec Visual Studio Code
Recharger le serveur configuré avec gunicorn lors du changement de code
Configurer la connexion sociale avec Django
Créer un serveur Flask avec Docker
Obtenez un environnement local pour DynamoDB avec Docker
Dessinez un ensemble de Mandelbrot avec Brainf * ck
Configurer un proxy inverse vers le serveur https avec CentOS Linux 8 + Apache mod_ssl
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Configurer un serveur qui traite plusieurs connexions en même temps
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Démarrez un serveur http temporaire localement avec Pytest
Démarrez un serveur Web Python simple avec Docker
Serveur de jeu avec deux PC
Lancer un serveur Web avec Python et Flask
Configurer un environnement de développement Python sur Marvericks
Monter le répertoire d'un autre serveur avec sshfs
Créer un serveur "Hello World" (HTTP) dans Tornado
Comment préparer l'environnement pour Google Colab avec le cours avancé d'apprentissage automatique de Coursera
Configurer un serveur de fichiers en utilisant samba avec ZeroPi de Friendly Arm [installation du système d'exploitation]
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
Je veux configurer un serveur fictif pour python-flask en quelques secondes en utilisant swagger-codegen.
Configurer un serveur de fichiers utilisant la samba avec ZeroPi de Friendly Arm [Articles achetés]
Configurer un serveur de fichiers utilisant la samba avec ZeroPi de Friendly Arm [Importation personnelle]
Créer un serveur local GIF animé avec Python + Flask
Mettre en place un environnement de développement pour le traitement du langage naturel
Comment configurer un environnement Python à l'aide de pyenv
J'ai créé un serveur syslog prêt à l'emploi avec Play with Docker
Une histoire qui a eu du mal avec l'ensemble commun HTTP_PROXY = ~
Configurer Docker sur Oracle Linux (7.x) avec Vagrant
Un serveur qui fait écho aux données POSTées avec flask / python
Créez un serveur de musique domestique avec Centos8 + Universal Media Server
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
Remarques sur l'accélération du code Python avec Numba
Lancer Django sur un conteneur Docker à l'aide de docker-compose up
Créez un faux serveur Minecraft en Python avec Quarry
Je veux lier une variable locale avec lambda
Lorsqu'il est difficile de configurer un serveur SMTP localement lors de l'envoi de courrier avec Python.