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
PC Windows10 Android Studio 4.0 Kotlin 1.3.72 Émulateur de terminal Android (niveau d'API 29) Go 1.11.1
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
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
Placez le fichier à télécharger dans le même répertoire que main.go
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>
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
}
}
Confirmez l'adresse IP du serveur (PC) auquel vous souhaitez accéder en exécutant ce qui suit avec l'invite de commande
>ipconfig
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
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
)
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)
Package http Vérifiez l'existence de fichiers et de répertoires en langue Go (golang) [Golang] Exemple de lecture de fichier
Comment télécharger et enregistrer un fichier avec HTTP en Java
Recommended Posts