Модификация метода onResponse не выполняется - PullRequest
0 голосов
/ 24 марта 2020
    import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;


interface ApiInterface {


    @POST("doctorCategories.php")
    Call<List<DoctorModel>> getDoctorModel();
}

Вот главный вызов

...
mport androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class DoctorListRecycler extends AppCompatActivity {
    DoctorAdapter retrofitAdapter;
    RecyclerView recyclerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_doctor_list_recycler);
        fetchJSON();
    }
    private void fetchJSON(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://svinothadapitest/doctorpat/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        ApiInterface api = retrofit.create(ApiInterface.class);
        Call<List<DoctorModel>> call = api.getDoctorModel();
    call.enqueue(new Callback<List<DoctorModel>>() {
        @Override
        public void onResponse(Call<List<DoctorModel>> call, Response<List<DoctorModel>> response) {
            Log.i("Responsestring", response.body().toString());
            Toast.makeText(DoctorListRecycler.this, "Hi" +call, Toast.LENGTH_SHORT).show();

            if (response.isSuccessful()) {
                if (response.body() != null) {
                    Toast.makeText(DoctorListRecycler.this, "Hi", Toast.LENGTH_SHORT).show();
                    Log.i("onSuccess", response.body().toString());

                    String jsonresponse = response.body().toString();
                    writeRecycler(jsonresponse);

                } else {
                    Log.i("onEmptyResponse", "Returned empty response");//Toast.makeText(getContext(),"Nothing returned",Toast.LENGTH_LONG).show();
                }
            }
        }

        @Override
        public void onFailure(Call<List<DoctorModel>> call, Throwable t) {
            Toast.makeText(DoctorListRecycler.this, "Failure Server", Toast.LENGTH_SHORT).show();
        }
    });
    }
    private void writeRecycler(String response){
        try {
            //getting the whole json object from the response
            JSONObject obj = new JSONObject(response);
            // if(obj.optString("status").equals("true")){
            ArrayList<DoctorModel> modelRecyclerArrayList = new ArrayList<>();
            JSONArray dataArray  = obj.getJSONArray("data");
            for (int i = 0; i < dataArray.length(); i++) {
                DoctorModel modelRecycler = new DoctorModel();
                JSONObject dataobj = dataArray.getJSONObject(i);
                // modelRecycler.setImgURL(dataobj.getString("imgURL"));
                modelRecycler.setName(dataobj.getString("Name"));
                modelRecycler.setSpecialist(dataobj.getString("Dermatologist"));
                modelRecycler.setAddress(dataobj.getString("Address"));
                modelRecyclerArrayList.add(modelRecycler);
            }

            retrofitAdapter = new DoctorAdapter(this,modelRecyclerArrayList);
            recyclerView.setAdapter(retrofitAdapter);
            recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false));

            //}else {
            //     Toast.makeText(DoctorListRecycler.this, obj.optString("message")+"", Toast.LENGTH_SHORT).show();
            //}

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

    }
}
...

Класс Pojo

...

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class DoctorModel {
    @SerializedName("sno")
    private String sno;
    @SerializedName("Doctorid")
    private String Doctorid;
    @SerializedName("Name")
    private String Name;
    @SerializedName("Password")
    private String Password;
    @SerializedName("mobileno")
    private String mobileno;
    @SerializedName("Specialist")
    private String Specialist;
    @SerializedName("Experience")
    private String Experience;
    @SerializedName("Address")
    private String Address;
    @SerializedName("rating")
    private String rating;

    public DoctorModel() {
    }

    public DoctorModel(String name, String specialist, String address, String rating) {
        Name = name;
        Specialist = specialist;
        Address = address;
        this.rating = rating;
    }

    public DoctorModel(String sno, String doctorid, String name, String password, String mobileno, String specialist, String experience, String address, String rating) {
        this.sno = sno;
        Doctorid = doctorid;
        Name = name;
        Password = password;
        this.mobileno = mobileno;
        Specialist = specialist;
        Experience = experience;
        Address = address;
        this.rating = rating;
    }


    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

    public String getDoctorid() {
        return Doctorid;
    }

    public void setDoctorid(String doctorid) {
        Doctorid = doctorid;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getMobileno() {
        return mobileno;
    }

    public void setMobileno(String mobileno) {
        this.mobileno = mobileno;
    }

    public String getSpecialist() {
        return Specialist;
    }

    public void setSpecialist(String specialist) {
        Specialist = specialist;
    }

    public String getExperience() {
        return Experience;
    }

    public void setExperience(String experience) {
        Experience = experience;
    }

    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }

    public String getRating() {
        return rating;
    }

    public void setRating(String rating) {
        this.rating = rating;
    }
}
...

Класс адаптера ...

import android.content.Context;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;
        import androidx.recyclerview.widget.RecyclerView;

        import java.util.ArrayList;
        public class DoctorAdapter extends RecyclerView.Adapter<DoctorAdapter.MyViewHolder> {
            private LayoutInflater inflater;
            private ArrayList<DoctorModel> dataModelArrayList;

            public DoctorAdapter(Context ctx, ArrayList<DoctorModel> dataModelArrayList) {
                inflater = LayoutInflater.from(ctx);
                this.dataModelArrayList = dataModelArrayList;
            }

            @Override
            public DoctorAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = inflater.inflate(R.layout.list_doctor, parent, false);
                MyViewHolder holder = new MyViewHolder(view);
                return holder;
            }

            @Override
            public void onBindViewHolder(DoctorAdapter.MyViewHolder holder, int position) {
                //Picasso.get().load(dataModelArrayList.get(position).getImgURL()).into(holder.iv);
                holder.name.setText(dataModelArrayList.get(position).getName());
                holder.Specialist.setText(dataModelArrayList.get(position).getSpecialist());
                holder.address.setText(dataModelArrayList.get(position).getAddress());
                holder.rating.setText(dataModelArrayList.get(position).getRating());
            }

            @Override
            public int getItemCount() {
                return dataModelArrayList.size();
            }

            class MyViewHolder extends RecyclerView.ViewHolder {

                TextView name, Specialist, address, rating;
                //ImageView iv;

                public MyViewHolder(View itemView) {
                    super(itemView);

                    name = (TextView) itemView.findViewById(R.id.name);
                    Specialist = (TextView) itemView.findViewById(R.id.Specialist);
                    address = (TextView) itemView.findViewById(R.id.address);
                    rating = (TextView) itemView.findViewById(R.id.rating);
                    //iv = (ImageView) itemView.findViewById(R.id.iv);
                }

            }
        }
...

json вывод ...

{
    "data": [
        {
            "sno": "1",
            "Doctorid": "200",
            "Name": "Rai A",
            "Password": "1234",
            "mobileno": "9500012758",
            "Specialist": "Dermatologist",
            "Experience": "38",
            "Address": "21/22 Greams Lane, \nThousand Lights, Off Greams Ro",
            "rating": "4"
        },
        {
            "sno": "2",
            "Doctorid": "201",
            "Name": "Shraa M",
            "Password": "3242",
            "mobileno": "9962222923",
            "Specialist": "Diabetologist",
            "Experience": "45",
            "Address": "No. 21, Greams Lane,Off, Chennai",
            "rating": "5"
        }]
}

...

Любой может помочь мне, что я получаю сообщение onFailure каждый раз, когда я устанавливаю соединение ответа в модификации. Я пытаюсь исправить эту ошибку за последние четыре часа, но я не смог ее найти ... Пожалуйста, помогите мне ...... Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

onFailure означает, что у вас нет ответа. Либо потому, что у вас нет соединения inte rnet, либо вы пропингуете неправильный сервер.

Некоторая проблема также может быть связана с вашим конвертером GSON, но здесь это не так.

Я могу сказать, что до сих пор я вижу, что вы пингуете не тот сервер
https://svinothadapitest/doctorpat/, который, безусловно, будет вызывать onFailure

0 голосов
/ 24 марта 2020
public void getData() {


    RetrofitClient.getClient().getinfo(Constants.Api_key)
            .enqueue(new Callback<BellmanResponse>() {
                @Override
                public void onResponse(Call<BellmanResponse> call, 
     Response<BellmanResponse> response) {


                    if ("success".equals(response.body().getMessage())) {

                       ////////

                    } else {

                        ////////////

                    }


                }

                @Override
                public void onFailure(Call<BellmanResponse> call, Throwable t) {

                    //////////

                }
            });


}
...