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

Verwenden Sie OkHttp3, um GET- und POST-Anforderungen zu stellen.

Was ich gemacht habe

スクリーンショット 2019-04-24 18.50.21.png Platzieren Sie die Tasten GET und POST und senden Sie jede Methodenanforderung, wenn die Taste gedrückt wird.

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);

        //Holen Sie sich GET-Taste und POST-Taste
        Button getButton = findViewById(R.id.getButton);
        Button postButton = findViewById(R.id.postButton);

        //Wenn die GET-Taste gedrückt wird
        getButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OkHttpGet getTask = new OkHttpGet();
                getTask.execute();
            }
        });

        //Wenn die POST-Taste gedrückt wird
        postButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OkHttpPost postTask = new OkHttpPost();
                postTask.execute();
            }

        });
    }
}

Dieses Mal habe ich separate Klassen für Get und Post erstellt und sie aufgerufen. Beziehungsweise get.Task.execute(); postTask.execute(); Ruft mit an.

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-Anforderungsendpunkt";
        //Antwortdaten
        String strData = "";

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

        //Build-Anfrage einschließlich URL
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();

        try {
            //Ausführung anfordern
            Response response = client.newCall(request).execute();
            //Holen Sie sich Daten aus dem Hauptteil der Antwort
            strData = response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return strData;
    }

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

Dieses Mal habe ich die URL einschließlich der Abfrage in der URL festgelegt. Es scheint, dass zeitaufwändige Verarbeitung nicht im Hauptthread ausgeführt werden kann, daher wird AsyncTask für die asynchrone Verarbeitung verwendet. Führen Sie in doInBackground einen zeitaufwändigen Prozess aus (hier eine Anforderung mit OkHttp), und wenn dies erledigt ist Es fühlt sich an, als würde der Prozess zu onPostExecute verschoben. onPostExecute gibt das Ergebnis der von doInBackground durchgeführten asynchronen Verarbeitung an den Hauptthread zurück. Wenn Sie also das Ergebnis der Anforderung auf dem Bildschirm anzeigen möchten, können Sie dies hier tun. Vielleicht.

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\":\"Name\", \"taxis\":\"Einstufung\"}";

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

        OkHttpClient client = new OkHttpClient();

        String url = "URL für POST verwendet";
        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);
    }
}

Ich übergebe Daten im JSON-Format per POST. Davon abgesehen ist es dasselbe wie GET.

Recommended Posts

OkHttp3 (GET, POST) in Android Studio
OkHttp (grundlegendes GET / POST)
Hinweise zu Android Studio
Fügen Sie "@ SuppressWarnings" automatisch in Android Studio ein
Holen Sie sich das Ergebnis von POST in Java
Von Java nach C und von C nach Java in Android Studio
Verwendung von ExpandableListView in Android Studio
Riot (Chat App) Entwicklung (Einstellungen) in Android Studio
3 Möglichkeiten zum Importieren von Bibliotheken in Android Studio
Verwenden Sie das in Android Studio verwendete JDK im Terminal
Holen Sie sich Ihre Versionsnummer in der Android-App
Schwierigkeiten bei der Implementierung von Alarm Manager in Android Studio
* Android * [HTTP-Kommunikation_1] Versuchen Sie, die Web-API [GET, POST] zu aktivieren.
Ich habe ein Symbol, das in Android Studio nicht aufgelöst werden kann
Asynchrone Verarbeitung und Web-API-Integration in Android Studio
POST JSON in Java
Android Studio Teil 3-6 besiegen
Holen Sie sich Cookies im Frühling
Android Studio Teil 1 und Teil 2 besiegen
Holen Sie sich Android-Standortinformationen
Siehe C ++ im Android Studio-Modul (Java / Kotlin)
Verwenden Sie ein JDK eines anderen OpenJDK-Anbieters in Android Studio
So erhalten Sie Werte in Echtzeit mit TextWatcher (Android)
Sie verwenden derzeit Java 6. Lösung in Android Studio Gradle
[Rails] Holen Sie sich UserAgent auf den Controller
Holen Sie sich EXIF-Informationen in Java
[Java] KClass in Java herunterladen [Kotlin]
Java mit Visual Studio Code
[Android] Implementieren Sie Adblock in WebView
POST Json in Java ~ HttpURLConnection ~
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Das Problem, dass XML-Attribute in Android Studio willkürlich neu angeordnet werden
Quelle zur Anzeige des Zeichenarrays mit numberPicker in Android Studio (Java)
[Android] Ich möchte den Listener über die Schaltfläche in ListView abrufen
Feststellen, ob eine benutzerdefinierte Tastatur in Android Studio (Java) aktiviert ist