Bir web sayfasına Volley,Retrofit gibi kütüphaneler kullanmadan doğrudan java kütüphanesi olan HTTPUrlConnection sınıfı ile nasıl GET/POST tipinde istekte bulunabileceğinize ve nasıl response'u yakalayabileceğinize yanıt aradım.
public class SendRequest extends AsyncTask{ String message = ""; private void setMessage(String message){ this.message = message; } protected void onPreExecute(){} protected String doInBackground(String... arg0) { try{ URL url = new URL("https://deneme.com/api/add.php"); //İstekte bulunulacak sayfa JSONObject postDataParams = new JSONObject(); postDataParams.put("name", "Şerif GÜNGÖR"); //POST parametresi name ve değeri Şerif GÜNGÖR postDataParams.put("message", message); //POST parametresi message ve değeri message değişkeni değeri //Log.e("params",postDataParams.toString()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(3000 /* milliseconds */); conn.setConnectTimeout(3000 /* milliseconds */); conn.setRequestMethod("POST"); // Web Sayfasına post tipinde istekte bulun conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); writer.write(getPostDataString(postDataParams)); writer.flush(); writer.close(); os.close(); int responseCode=conn.getResponseCode(); if (responseCode == HttpsURLConnection.HTTP_OK) { BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuffer sb = new StringBuffer(""); String line=""; while((line = in.readLine()) != null) { sb.append(line); break; } in.close(); return sb.toString(); } else { return new String("false : "+responseCode); } } catch(Exception e){ return new String("Exception: " + e.getMessage()); } } @Override protected void onPostExecute(String result) { //İşlem gerçekleştiğinde Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show(); //Sayfadan dönen değeri toast ile bastır. } } public String getPostDataString(JSONObject params) throws Exception { StringBuilder result = new StringBuilder(); boolean first = true; Iterator itr = params.keys(); while(itr.hasNext()){ String key= itr.next(); Object value = params.get(key); if (first) first = false; else result.append("&"); result.append(URLEncoder.encode(key, "UTF-8")); result.append("="); result.append(URLEncoder.encode(value.toString(), "UTF-8")); } return result.toString(); }
İşlemi Tetikleyecek kod bloğu:
SendRequest sendRequest = new SendRequest(); sendRequest.setMessage(editText.getText().toString()); sendRequest.execute();