💌 HTTP İstekleri

Android üzerinden HTTP istekleri, request ve response yapısı

🔰 HTTP İsteği Nedir?

  • 🙏 Web sitelerinden içerik istemek için kullanılırlar

  • 💫 API işlemlerinde sıklıkla kullanılırlar

  • 🧱 GET, SET; POST vb. istek tipleri vardır

🆚 Volley ile Retrofit Farkı

📦 Volley

📦 Retrofit

Önbellek mekanizması

Bağlantıyı tekrardan gönderme

Gömülü olarak resim yüklenme desteği

JSON verilerini otomatik ayrıştırma

🌟 Volley Sık Kullanılanlar

🔤 String İstekleri

fun requestEarthQuakes(context: Context, onResponse: (String) -> Unit) {
val queue = Volley.newRequestQueue(context)
val stringRequest = StringRequest(Request.Method.GET, URL,
Response.Listener<String> { response ->
onResponse(response)
},
Response.ErrorListener { onResponse(null) }
)
queue.add(stringRequest)
}

🖼️ Resim İndirme İstekleri

/**
* Get [Bitmap] of image from the url
*/
fun requestImage(context: Context, onResponse: (Bitmap?) -> Unit) {
val requestQueue = Volley.newRequestQueue(context)
val imageRequest = ImageRequest(
IMAGE_URL,
Response.Listener { onResponse(it) },
0, // Image width
0, // Image height
ImageView.ScaleType.CENTER_CROP, // Image scale type
Bitmap.Config.RGB_565, //Image decode configuration
Response.ErrorListener { onResponse(null) }
)
requestQueue.add(imageRequest)
}

📜 JSON İstekleri

/**
* JSONArray Request
*/
fun requestJSONArray(
context: Context,
method: String,
module: String,
onResponse: (JSONArray?) -> Unit
) {
val requestQueue = Volley.newRequestQueue(context)
val jsonRequest = JsonArrayRequest(
Request.Method.GET,
"https://api.github.com/orgs/octokit/repos",
null,
Response.Listener { onResponse(it) },
Response.ErrorListener {
Log.e(TAG, "requestJSON: ", it)
onResponse(null)
}
)
requestQueue.add(jsonRequest)
}

⭐ Volley Örneği

*.java
/**
* https://developer.android.com/training/volley/simple.html
*
* @return
*/
static void requestNewsData(Context context, ResponseListener responseListener) {
RequestQueue queue = Volley.newRequestQueue(context);
StringRequest stringRequest = new StringRequest(Request.Method.GET, MAIN_URL, (response) -> {
// https://stackoverflow.com/a/9606629/9770490
try {
// new JSONObject(response).getJSONArray("articles").get(1).getString("source")
JSONObject responseObject = new JSONObject(response);
String status = responseObject.getString("status");
if (status.equals("ok")) {
JSONArray articles = new JSONObject(response).getJSONArray("articles");
ArrayList<News> newsDataList = new ArrayList<>();
for (int i = 0; i < articles.length(); i++) {
JSONObject article = articles.getJSONObject(i);
News news = new News();
news.setTitle(article.getString("title"));
news.setDescription(article.getString("description"));
news.setUrlToImage(article.getString("urlToImage"));
news.setUrl(article.getString("url"));
news.setContent(article.getString("content"));
news.setSource(article.getJSONObject("source").getString("name"));
news.setPublishedAt(article.getString("publishedAt"));
newsDataList.add(news);
Log.i(TAG, "getNewsData: " + newsDataList.get(i));
}
responseListener.onResponse(newsDataList);
}
} catch (JSONException e) {
e.printStackTrace();
}
}, Throwable::printStackTrace);
queue.add(stringRequest);
}
interface ResponseListener {
void onResponse(ArrayList<News> newsDataList);
}