Не удалось получить ответ от сервера в android с использованием Retrofit и PHP в качестве серверной части - PullRequest
3 голосов
/ 28 мая 2020

Не удалось получить тело ответа. Я использовал php в качестве внутреннего сервера в android с помощью Retrofit. в каждом своем проекте я использовал модернизацию, но на этот раз мне не удалось получить тело ответа с сервера, я не знаю, в чем проблема.

Я ищу по всему inte rnet, но мне не удалось решить проблему. ниже я поместил весь свой код. Заранее большое спасибо

VideoApi.class

import java .util.List;

    import retrofit2.Call;
    import retrofit2.Retrofit;
    import retrofit2.converter.gson.GsonConverterFactory;
    import retrofit2.http.GET;

    public interface VideoApi {
        String BASE_URL = "https://mozeloapp.in/ViddoApp/ViddoVideoRetrive.php/";

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        @GET(BASE_URL)
        Call<List<VideoModel>> getVideoLink();

    }

ModelClass. java

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

public class VideoModel {
    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("categoryId")
    @Expose
    private String categoryId;
    @SerializedName("categoryName")
    @Expose
    private String categoryName;
    @SerializedName("videoLink")
    @Expose
    private String videoLink;

    public VideoModel() {
    }

    public VideoModel(String id, String categoryId, String categoryName, String videoLink) {
        this.id = id;
        this.categoryId = categoryId;
        this.categoryName = categoryName;
        this.videoLink = videoLink;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(String categoryId) {
        this.categoryId = categoryId;
    }

    public String getCategoryName() {
        return categoryName;
    }

    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }

    public String getVideoLink() {
        return videoLink;
    }

    public void setVideoLink(String videoLink) {
        this.videoLink = videoLink;
    }
}

MainActivity. java

 private VideoApi videoApi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        videoApi = VideoApi.retrofit.create(VideoApi.class);
        Call<List<VideoModel>> call = videoApi.getVideoLink();
        call.enqueue(new Callback<List<VideoModel>>() {
            @Override
            public void onResponse(Call<List<VideoModel>> call, Response<List<VideoModel>> response) {
                if (response.isSuccessful()){
                    for (VideoModel videoModel : response.body()){
                        String link = videoModel.getVideoLink();
                        Log.d("VIDEOLINK", "onResponse: "+link);
                    }
                }else {
                    Log.d("VIDEOLINK", "onResponse: "+"failed");
                }
            }

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

                Log.d("VIDEOLINK", "onResponse: "+t.getLocalizedMessage());

            }
        });

    }
}

1 Ответ

0 голосов
/ 28 мая 2020

Кажется, вы ошиблись в анализируемых атрибутах. Я ожидаю, что из этой строки:

Log.d("VIDEOLINK", "onResponse: "+link);

Вы получите результат

"onResponse: null"

Исправьте свои SerializedName определения:

@SerializedName("name")
@Expose
private String categoryName;
@SerializedName("link")
@Expose
private String videoLink;

Я основываю свой ответ на то, что я вижу как ответ от вашего API.

...