[JAVA] OkHttp3 (GET, POST) dans Android Studio

Utilisez OkHttp3 pour faire des requêtes GET et POST.

Ce que j'ai fait

スクリーンショット 2019-04-24 18.50.21.png Placez les boutons GET et POST et envoyez chaque demande de méthode lorsque vous appuyez sur le bouton.

MainActivity

MainActivity.java


package com.example.sampleapplication.sample.okhttp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Obtenir le bouton GET et le bouton POST
        Button getButton = findViewById(R.id.getButton);
        Button postButton = findViewById(R.id.postButton);

        //Lorsque le bouton GET est appuyé
        getButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OkHttpGet getTask = new OkHttpGet();
                getTask.execute();
            }
        });

        //Lorsque le bouton POST est enfoncé
        postButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OkHttpPost postTask = new OkHttpPost();
                postTask.execute();
            }

        });
    }
}

Cette fois, j'ai créé des classes séparées pour Get et Post, et je les ai appelées. Chaque get.Task.execute(); postTask.execute(); Appelle avec.

GET

OkHttpGet.java


package com.example.sampleapplication.sample.okhttp;

import android.os.AsyncTask;
import android.util.Log;

import java.io.IOException;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpGet extends AsyncTask<String,String,String> {
    @Override
    protected String doInBackground(String... strings) {

        // url
        String url = "GET point de terminaison de la demande";
        //Données de réponse
        String strData = "";

        //Instanciation OkHttp
        OkHttpClient client = new OkHttpClient();

        //Demande de build avec URL
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();

        try {
            //Exécution de la demande
            Response response = client.newCall(request).execute();
            //Obtenir des données du corps de la réponse
            strData = response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return strData;
    }

    @Override
    protected void onPostExecute(String str) {
        Log.d("Debug",str);
    }
}

Cette fois, j'ai défini l'URL en incluant la requête dans l'URL. Il semble que le traitement fastidieux ne puisse pas être exécuté dans le thread principal, donc AsyncTask est utilisé pour le traitement asynchrone. Faites un processus chronophage (ici, une requête utilisant OkHttp) dans doInBackground, et quand c'est fait On a l'impression que le processus passe à onPostExecute. onPostExecute renvoie le résultat du traitement asynchrone effectué par doInBackground au thread principal. Donc, si vous souhaitez afficher le résultat de la demande à l'écran, vous pouvez le faire ici. Peut-être.

POST

OkHttpPost.java


package com.example.sampleapplication.sample.okhttp;

import android.os.AsyncTask;
import android.util.Log;

import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttpPost extends AsyncTask<String,String,String> {

    public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
    String json = "{\"name\":\"Nom\", \"taxis\":\"Classification\"}";

    @Override
    protected String doInBackground(String... strings) {

        OkHttpClient client = new OkHttpClient();

        String url = "URL utilisée pour POST";
        RequestBody body = RequestBody.create(JSON, json);

        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();

        try {
            Response response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String str) {
        Log.d("Debug",str);
    }
}

Je passe des données au format json par POST. A part ça, c'est la même chose que GET.

Recommended Posts

OkHttp3 (GET, POST) dans Android Studio
OkHttp (GET / POST de base)
Remarques sur le studio Android
Insérez automatiquement `@ SuppressWarnings` dans Android Studio
Obtenez le résultat de POST en Java
De Java à C et de C à Java dans Android Studio
Comment utiliser ExpandableListView dans Android Studio
Développement (paramètres) Riot (application de chat) dans Android Studio
3 façons d'importer des bibliothèques dans Android Studio
Utilisez le JDK utilisé dans Android Studio dans le terminal
Obtenez votre numéro de version dans l'application Android
Difficultés lors de la mise en œuvre d'Alarm Manager dans Android Studio
* Android * [HTTP communication_1] Essayez d'accéder à l'API Web [GET, POST]
J'ai un symbole de résolution impossible dans Android Studio
Traitement asynchrone et intégration d'API Web dans Android Studio
POST JSON en Java
Vaincre Android Studio Partie 3-6
Obtenez des cookies au printemps
Vaincre Android Studio Partie 1 et Partie 2
Obtenir des informations de localisation Android
Reportez-vous à C ++ dans le module Android Studio (Java / kotlin)
Utiliser un JDK d'un autre fournisseur OpenJDK dans Android Studio
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Vous utilisez actuellement Java 6. Solution dans Android Studio Gradle
[Rails] Obtenir UserAgent sur le contrôleur
Obtenir des informations EXIF en Java
[Java] Obtenir KClass en Java [Kotlin]
Java avec Visual Studio Code
[Android] Mettre en œuvre Adblock dans WebView
POST Json en Java ~ HttpURLConnection ~
J'ai essayé de créer une application cartographique simple dans Android Studio
Le problème de la réorganisation arbitraire des attributs XML dans Android Studio
Source pour afficher le tableau de caractères avec numberPicker dans Android Studio (Java)
[Android] Je souhaite obtenir l'auditeur à partir du bouton de ListView
Déterminer si un clavier personnalisé est activé dans Android Studio (Java)