Bismillaahirrohmaanirrohiim…
Kali ini, aku ingin menciptakan tutorial sederhana cara gampang memakai OkHTTP di android studio.
OkHTTP merupakan library yang dipakai di android studio untuk melaksanakan request ke suatu URL.
Jika memakai PHP, kita dapat pakai PHP CURL. Di j4vascript, kita dapat pakai ajax.
kenapa menentukan OkHTTP, padahal berbagai library semacamnya, menyerupai volley, retrofit, loopj, dll.
Ini duduk perkara selera, namun aku sendiri mencicipi jikalau OkHTTP terasa lebih stabil, lebih ringan, dan lebih gampang dibandingkan dengan yang lain.
Pada referensi kali ini, kita akan menciptakan request dengan metode synchronous dan asynchronous.
Sederhananya, request synchronous dijalankan di agenda dan tidak akan menjalankan instruksi setelahnya sebelum request telah selesai.
Sebaliknya, request asynchronous dijalankan di background, sehingga instruksi setelahnya akan eksklusif dihukum tanpa menunggu request selesai.
Masing-masing metode memiliki kelebihan dan kekurangan, kita boleh pakai sesuai kebutuhan.
Oke eksklusif saja, pertama buat project gres di android studio
Isikan nama “Belajar OkHTTP” kemudian next
Pilih minimum SDK API 17, Android 4.2 Jelly bean ato versi berapa aja sesuai keinginan, kemudian next
Pilih empty activity kemudian next
Biarkan nilai default “MainActivity” kemudian finish
Tunggu hingga selesai menyiapkan project untuk kita.
Buka file build.gradle (Module: app)
Tambahkan instruksi dibawah ini dibagian dependencies
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
Sehingga risikonya kurang lebih menyerupai dibawah ini
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
}
Kemudian klik “Sync Now” ada di link kanan atas. Tunggu hingga selesai sinkronisasinya.
Tambahkan instruksi permission dibawah ini di AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Edit activity_main.xml menyerupai dibawah ini
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Belajar OkHTTP"
android:textAlignment="center"
android:textSize="24sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="5dp"
android:background="#c0c0c0" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/buttonSync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minHeight="0dp"
android:minWidth="0dp"
android:text="Synchronous" />
<Button
android:id="@+id/buttonAsync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minHeight="0dp"
android:minWidth="0dp"
android:text="Asynchronous" />
</LinearLayout>
</LinearLayout>
Edit file MainActivity.j4va menyerupai di bawah ini
package com.rasupe.belajarokhttp;
import android.content.Context;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import j4va.io.IOException;
import j4va.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
public class MainActivity extends AppCompatActivity {
private Button buttonSync, buttonAsync;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
buttonSync = findViewById(R.id.buttonSync);
buttonAsync = findViewById(R.id.buttonAsync);
buttonSync.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestSync();
}
});
buttonAsync.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestAsync();
}
});
}
private void requestSync() {
int SDK_INT = android.os.Build.VERSION.SDK_INT;
if (SDK_INT > 8) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(5, TimeUnit.SECONDS);
builder.readTimeout(5, TimeUnit.SECONDS);
builder.writeTimeout(5, TimeUnit.SECONDS);
OkHttpClient client = builder.build();
Request request = new Request.Builder()
//.url("https://publicobject.com/helloworld.txt")
.url("https://jsonplaceholder.typicode.com/todos/1")
.build();
try {
Response response = client.newCall(request).execute();
//response.body().string() dihentikan dipanggil 2x
String responseString = response.body().string();
Toast.makeText(this, responseString, Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
Toast.makeText(this, "OkHTTP requestSync", Toast.LENGTH_SHORT).show();
}
private void requestAsync() {
int SDK_INT = android.os.Build.VERSION.SDK_INT;
if (SDK_INT > 8) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(5, TimeUnit.SECONDS);
builder.readTimeout(5, TimeUnit.SECONDS);
builder.writeTimeout(5, TimeUnit.SECONDS);
OkHttpClient client = builder.build();
Request request = new Request.Builder()
//.url("https://publicobject.com/helloworld.txt")
.url("https://jsonplaceholder.typicode.com/todos/1")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("debuging", "Request Failed."+e.getMessage());
responseAsync("Request Failed."+e.getMessage());
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
if (response.isSuccessful()) {
String responseString = response.body().string();
Log.d("debuging", responseString);
responseAsync(responseString);
} else {
Log.d("debuging", "Error "+ response);
responseAsync("Error "+ response);
}
} catch (IOException e) {
Log.d("debuging", "Exception caught : ", e);
responseAsync("Error "+ e.getMessage());
}
}
});
Toast.makeText(this, "OkHTTP requestAsync", Toast.LENGTH_SHORT).show();
}
private void responseAsync(final String responseStr) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), responseStr, Toast.LENGTH_SHORT).show();
}
});
}
}
Silahkan di run
semoga tidak error 🙂
Nah, cukup gampang bukan, cara memakai OkHTTP di android studio.
Jika ingin request menambahkan header dan metode POST dengan OkHTTP cukup mudah, perhatikan instruksi dibawah ini:
RequestBody requestBody = new FormBody.Builder()
.add("param1", "value1")
.add("param2", "value2")
.build();
Request request = new Request.Builder()
//.url("https://publicobject.com/helloworld.txt")
.url("https://jsonplaceholder.typicode.com/todos/1")
.post(requestBody)
.addHeader("Connection", "Keep-Alive")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
Demikian tutorial memakai OkHTTP di android studio dengan mudah.
Jika ada yang ingin disampaikan, silahkan tinggalkan di kolom komentar.
Terimakasih
Sumber https://rasupe.com
Mari berteman dengan saya
Follow my Instagram _yudha58
0 Response to "Cara Memakai Okhttp Di Android Studio"
Posting Komentar