Как выставить рейтинг с помощью библиотеки Android Volley - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно реализовать рейтинг студентов, используя Android Библиотека залпа. Я получил GET имя студента, используя запрос GET с Volley. Мне нужно ПОСТАВИТЬ значение рейтинга с помощью API рейтинга. API требует использования Body и form-data как в POSTMAN с Key-value как (rate [], client_id). Я написал реализацию Volley для Rating API, но она выдает следующую ошибку «E / Volley: [99703] BasicNetwork.performRequest: Неожиданный код ответа 403 для http://api-eriqab.cocalms.com/api/v1/storeClient/20» и «E / VOLLEY: null». Как реализовать и устранить эту ошибку.

Требование API

enter image description here

Метод API

private void Rating() {

    String URL = RestAPI.Rate + ratingList.getId();

    StringRequest request = new StringRequest(Request.Method.POST, URL, detailRatingListener, errorRatingListener) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("rate[]", String.valueOf(ratingList.getUrate()));
            params.put("client_id[]", String.valueOf(ratingList.getuClient_id()));

            return params;
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Accept", "application/vnd.MAIS_ERIQAB.v1+json");
            params.put("Authorization", "Bearer " + storeToken);
            return params;
        }
    };
    VolleySingleton.getInstance(this).addToRequestQueue(request);
}

public Response.Listener<String> detailRatingListener = response ->
{
    Log.i("VOLLEY", "response" + response);
    try {
        JSONObject responseObj = new JSONObject(response);
        JSONArray array = responseObj.optJSONArray("data");
        JSONArray msg = responseObj.optJSONArray("message");

        if(msg.equals("success")) {
            Toast.makeText(getApplicationContext(), "Successfully Submitted ", Toast.LENGTH_LONG).show();
            Intent intent = new Intent(StudentRating.this, ClassDetails.class);
            startActivity(intent);
        } else {
            Toast.makeText(getApplicationContext(), "Failed to Submit", Toast.LENGTH_LONG).show();
        }[![enter image description here][1]][1]

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

Response.ErrorListener errorRatingListener = error -> {
    Log.e("VOLLEY", "" + error.getMessage());
};

Код адаптера

public class StudentRatingAdapter extends RecyclerView.Adapter<StudentRatingAdapter.RatingViewHolder> {

private Context context;
private List<StudentRatingModel> ratingList;
private StudentRatingModel list;

public StudentRatingAdapter(Context context, List<StudentRatingModel>ratingList) {
    this.context = context;
    this.ratingList = ratingList;
}

@NonNull
@Override
public RatingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.pembelajaran_kehadiran_card, parent, false);
    return new RatingViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull StudentRatingAdapter.RatingViewHolder holder, int position) {

    list = ratingList.get(position);

    holder.textView.setText(list.getName());
    holder.ratingBarStudent.setRating(list.getRating());
}

@Override
public int getItemCount() {
    return ratingList == null ? 0 : ratingList.size();
}

public class RatingViewHolder extends RecyclerView.ViewHolder {

    TextView textView;
    RatingBar ratingBarStudent;
    Switch ratingSwitchStudent;

    public RatingViewHolder(@NonNull View itemView) {
        super(itemView);

        textView = itemView.findViewById(R.id.studentNameRating);
        ratingBarStudent = itemView.findViewById(R.id.ratingStudent);
        ratingSwitchStudent = itemView.findViewById(R.id.switchBtnStudent);

        ratingBarStudent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int var = (int) ratingBarStudent.getRating();
                list.setUrate(var);
                list.setuClient_id(list.getId());
            }
        });

    }
}

}

Вызов метода

selasaiBtn = (Button) findViewById(R.id.selasai);
selasaiBtn.setOnClickListener(new View.OnClickListener() {
   @Override
     public void onClick(View v) {
       Rating();
   }
});
...