Ответ на модификацию, возвращающий значение null в методе get

У меня есть такой URL

http://182.72.198.001:8080/MyLogin/login/xxxxxx/yyyyyy

userName : xxxxxx
password : yyyyyy

Я использую модификацию, чтобы получить ответ по указанному выше URL-адресу, но он возвращает значение null, мой класс модернизации

public class ApiClient {

    public static Retrofit retrofit = null;
    public static Retrofit getApiCLient() {

        if (retrofit == null) {
            retrofit = new Retrofit.Builder().baseUrl("http://182.72.198.001:8080/MyLogin/").addConverterFactory
                    (GsonConverterFactory.create()).build();
        }
        return retrofit;
    }
}

а класс myInterface -

public interface MyInterface {

@GET("login/")
Call<ResponseBody> LoginValidation(@Query("userName") String username, @Query("password") String password);        
}

Мой основной класс

MyInterface loginInterface;


 loginInterface = ApiClient.getApiCLient().create(MyInterface.class);
 private  void  LoginUser()
 {
     final String usedrname = username1.getText().toString();
     final String password = password1.getText().toString();
     Call<ResponseBody> call = loginInterface.LoginValidation(usedrname,password);
     Log.i("Tag","Interface" + usedrname+password);
     call.enqueue(new Callback<ResponseBody>() {
         @Override
         public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

             Log.i("Tag","Respose" + response.body());  // this body returns null
             Toast.makeText(getApplicationContext(), "Thank You!", Toast.LENGTH_SHORT).show();
             editor.putString("username",usedrname);
             editor.putString("password",password);
             editor.putBoolean("isLoginKey",true);
             editor.commit();
             Intent i=new Intent(MainActivity.this,Navigation.class);
             i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             startActivity(i);
     }
     @Override
     public void onFailure(Call<ResponseBody> call, Throwable t) {
          Toast.makeText(getApplicationContext(),"Username or password Mismatch",Toast.LENGTH_LONG).show();

         }
     });

 }

Как я могу решить эту проблему, если я сделал что-то не так в этом коде?

0
0
323
2

Ответы 2

http://182.72.198.001:8080/MyLogin/login/xxxxxx/yyyyyy

Если вам нужно сформировать указанный выше URL-адрес, вам необходимо отправить имя пользователя и пароль в URL-адресе. Итак, ваш интерфейс Retrofit должен выглядеть так:

public interface MyInterface {

    @GET("login/{userName}/{password}")
    Call<ResponseBody> LoginValidation(@Path("userName") String username, 
                                       @Path("password") String password);

}

Я пробовал это, также он возвращал этот khttp3.ResponseBody$1@3febf20

Archu Mohan 11.10.2018 09:43

если вы хотите response как json string, позвоните response.body().string()

Bek 11.10.2018 10:00

всегда его перенаправление на другую страницу, если я даю неправильное имя пользователя и пароль

Archu Mohan 11.10.2018 10:13

С использованием

@GET("login/")
Call<ResponseBody> LoginValidation(@Query("userName") String username, @Query("password") String password);

Ваш URL станет: http://182.72.198.001:8080/MyLogin/login/?userName=xxxxxx&password=yyyyyy

Для точного звонка по мере необходимости используйте это (как ответил @Avijit Karmakar)

public interface MyInterface {

        @GET("login/{userName}/{password}")
        Call<ResponseBody> LoginValidation(@Path("userName") String username, 
                                           @Path("password") String password);

    }

Используя этот метод, вы получите именно тот результат, который хотите.

Я пробовал это, также он возвращал этот khttp3.ResponseBody$1@3febf20

Archu Mohan 11.10.2018 09:47

debug вы вызываете и оцениваете call.request. Он покажет вам, ваш запрос API

Harish Kamboj 11.10.2018 09:48

Другие вопросы по теме