Получение Json Response Api - PullRequest
       6

Получение Json Response Api

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

Я создал API аутентификации (Войти и Зарегистрироваться), используя larval, и протестировал их в студии android, и они работают хорошо, во время соединения я получаю всю информацию пользователя.

I / onSuccess: {"status": "success", "data": {"id": 2, "name": "user", "prenom": "user" ...}

Мой Фрагмент входа в систему

  Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(LoginInterface.LOGINURL)
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .build();

            LoginInterface api = retrofit.create(LoginInterface.class);

            Call<String> call = api.getUserLogin(getEmailId, getPassword);
            call.enqueue(new Callback<String>() {
                @Override
                public void onResponse(Call<String> call, Response<String> response) {

                    if (response.isSuccessful()) {
                        if (response.body() != null) {
                            Log.i("Responsestring", response.body().toString());
                            Log.i("onSuccess", response.body().toString());

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

                            try {
                                JSONObject jsonObject = new JSONObject(jsonresponse);

                                if (jsonObject.getString("status").equals("success")) {
                                    Toast.makeText(getActivity(), "Login Successfully!", Toast.LENGTH_SHORT)
                                            .show();
                                    Intent intent;
                                    intent = new Intent(getActivity(), ActivityListEvents.class);
                                    startActivity(intent);

                                }

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

                        }

Мой Интерфейс входа в систему

public interface LoginInterface {

    String LOGINURL = "http://192.168.1.105/AnnocesPFE/public/api/";
    @FormUrlEncoded
    @POST("login")
    Call<String> getUserLogin(
            @Field("email") String email,
            @Field("password") String password
    );

}

Мне нужно получить Id из фрагмента входа в систему и использовать его в моем профиле, как я могу это сделать?

Мне нужно использовать его в ProfileFragment

  Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(UpdateProfile.UPDPRO)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
        UpdateProfile api = retrofit.create(UpdateProfile.class);
        Call<String> call = api.UpdateUsers(getId(),name,prenom,adresse,email,numtel);
        //Log.i("updateUsers: ",prenom);
        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {

                if (response.isSuccessful()) {
                    if (response.body() != null) {
                        Log.i("Responsestring", response.body().toString());
                        Log.i("onSuccess", response.body().toString());
                        String jsonresponse = response.body().toString();
                        try {
                            JSONObject jsonObject = new JSONObject(jsonresponse);

                            if (jsonObject.getString("status").equals("success")) {
                                Toast.makeText(getActivity(), "Update Successfully!", Toast.LENGTH_SHORT)
                                        .show();
                            } else if (jsonObject.getString("status").equals("error")) {
                              /*  new CustomToast().Show_Toast(getActivity(), view,
                                        " " + jsonObject.getString("message"));*/
                                Toast.makeText(getActivity(), "Update failed!", Toast.LENGTH_SHORT)
                                        .show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }

                }

Ответы [ 2 ]

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

Мой интерфейс входа в систему

 public interface LoginInterface {
    String LOGINURL = "http://192.168.1.108/AnnocesPFE/public/api/";
    @FormUrlEncoded
    @POST("login")
    Call<String> getUserLogin(
            @Field("email") String email,
            @Field("password") String password
    );
}

LoginFragment


            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(LoginInterface.LOGINURL)
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .build();

            LoginInterface api = retrofit.create(LoginInterface.class);

            Call<String> call = api.getUserLogin(getEmailId, getPassword);
            call.enqueue(new Callback<String>() {
                @Override
                public void onResponse(Call<String> call, Response<String> response) {

                    if (response.isSuccessful()) {
                        if (response.body() != null) {
                            Log.i("Responsestring", response.body().toString());
                            Log.i("onSuccess", response.body().toString());

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

                            try {
                                JSONObject jsonObject = new JSONObject(jsonresponse);

                                if (jsonObject.getString("status").equals("success")) {
                                    Toast.makeText(getActivity(), "Login Successfully!", Toast.LENGTH_SHORT)
                                            .show();
                                    Intent intent;
                                    intent = new Intent(getActivity(), ActivityListEvents.class);
                                    startActivity(intent);
                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }

При входе в систему я получаю ответ в своей консоли

I / onSuccess: {" status ":" success "," data ": {" id ": 2," name ":" user "," prenom ":" user "...}

Мой профиль профиля обновления

public interface UpdateProfile {

    String UPDPRO ="http://192.168.1.108/AnnocesPFE/public/api/";
    @FormUrlEncoded
    @PUT("users/{id}")
    Call<String> UpdateUsers(
            @Path("id") int id,
            @Field("name") String name,
            @Field("prenom") String prenom,
            @Field("adresse") String adresse,
            @Field("email") String email,
            @Field("numtel") String numtel
    );
}

ProfileFragment

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(UpdateProfile.UPDPRO)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
        UpdateProfile api = retrofit.create(UpdateProfile.class);
        Call<String> call = api.UpdateUsers(getId(),name,prenom,adresse,email,numtel);
        Log.i("updateUsers: ",String.valueOf(getId()));
        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {

                if (response.isSuccessful()) {
                    if (response.body() != null) {
                        Log.i("Responsestring", response.body().toString());
                        Log.i("onSuccess", response.body().toString());
                        String jsonresponse = response.body().toString();
                        try {
                            JSONObject jsonObject = new JSONObject(jsonresponse);

                            if (jsonObject.getString("status").equals("success")) {
                                Toast.makeText(getActivity(), "Update Successfully!", Toast.LENGTH_SHORT)
                                        .show();
                            } else if (jsonObject.getString("status").equals("error")) {
                              /*  new CustomToast().Show_Toast(getActivity(), view,
                                        " " + jsonObject.getString("message"));*/
                                Toast.makeText(getActivity(), "Update failed!", Toast.LENGTH_SHORT)
                                        .show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }

                }

getID () возвращает ложное значение, мне нужно подключить идентификатор текущего пользователя, чтобы использовать его во фрагменте моего профиля

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

Вы можете преобразовать ответ, полученный от вашего API аутентификации, в JSONObject, а затем получить нужные значения.

Например,

JSONObject authenticationData = new JSONObject(jsonResponse);
try {
   int successId = authenticationData.getInt("id");
catch(JSONException e) {
  e.printStackTrace();
}

Затем вы можете передать successId на фрагмент по вашему выбору.

Подробнее о JSONObject

Если вы имели в виду, как передавать данные между фрагментами, то, пожалуйста, покажите нам структуру и некоторый код.

...