Android HTTPUrlConnection Kullanımı ve Web Post Get İşlemleri

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("http://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();
Bu makaleyi paylaşın:

3 Comments

Bir yorum bırakın