roy
roy

Reputation: 141

Android Retrofit Post Data

I am working with an Android Recyclerview with Retrofit, it is working without any Post Data. I need to post some data in my current Code.

Below is my Current ApiInterface

public interface ApiInterface {
   @GET("mypage.php")
   Call<Pojo> getData();
}

And in my activity I am calling this by below code

ApiInterface apiInterface = (ApiInterface) RetrofitClient.getRetrofitInstance().create(ApiInterface.class);
    Call<Pojo> listingdata = apiInterface.getData();
    listingdata.enqueue(new Callback<Pojo>() {
        @Override
        public void onResponse(Call<Pojo> call, Response<Pojo> response) {

            if(response.isSuccessful()){
                recycleradpter recycleradpter = new recycleradpter(response.body().getData());
                recyclerView.setAdapter(recycleradpter);
                progressbar2.setVisibility(View.GONE);
            }

        }

        @Override
        public void onFailure(Call<Pojo> call, Throwable t) {
            //System.out.println("12345678934567890234567890");
            //Toast.makeText(getActivity(), "No Connected internet", Toast.LENGTH_SHORT).show();
           progressbar2.setVisibility(View.GONE);
            dialogfunction();
        }
    });

How Can I get data based on passed data in above code

Upvotes: 1

Views: 443

Answers (2)

Deep Rathod
Deep Rathod

Reputation: 69

@FormUrlEncoded
@POST("your_php_file.php")
Call<ResponseBody> getLanguageCall(@Field("lang_code") String lang_code, @Field("app_id") String app_id);


private void getLanguageCall() {
    progressDialog.setVisibility(VISIBLE);
    Call<ResponseBody> call = ApiClient.getClient().create(ApiInterface.class).getLanguageCall(PreferenceManager.getStringPreference(SplashActivity.this, appLanguage), PreferenceManager.getStringPreference(SplashActivity.this, PreferenceManager.APP_ID));
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            progressDialog.setVisibility(View.GONE);
            if (!response.isSuccessful()) {
                showToast(response.code() + " : " + response.message());
                return;
            }
            try {
                JSONObject root = new JSONObject(response.body().string());
                HashMap<String, String> list = new HashMap<String, String>();
                JSONArray keyData = root.getJSONArray("key_data");
                for (int i = 0; i < keyData.length(); i++) {
                    JSONObject obj = keyData.getJSONObject(i);
                    list.put(obj.getString("Key_Name").toLowerCase(), obj.getString("Key_Value"));
                }
                finish();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            t.printStackTrace();
            progressDialog.setVisibility(View.GONE);
            showToast("Error ! Server Error.");
        }
    });
}

Upvotes: -1

Mohammad Abdul Alim
Mohammad Abdul Alim

Reputation: 488

If you want to send a post request then you have to create a method like below. The calling of the method will be similar to that of get request. Just pass the parameters of your post body. You can for details here.

 @POST("mypage.php")
 Call<Pojo> postData(
     @Field("param1") String param1,
     @Field("param2") int param2
 );

Upvotes: 2

Related Questions