Модифицированный ответ null - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь вызвать этот запрос с помощью Retrofit

enter image description here

мой код:

 Map<String, String> parameters = new HashMap<>();


Clientn client = new Clientn();
final WaselJsonPlaceHolderApi apiService = client.getClient().create(WaselJsonPlaceHolderApi.class);

Call<TokenModel> call = apiService.getLoginToken( "password", "ec_user","EC_P@ssw0rd" , "0500344253", "1993");

call.enqueue(new Callback<TokenModel>() {
     @Override
     public void onResponse(Call<TokenModel> call, Response<TokenModel> response) {
          Log.e("TAG-TAG", ""+response.errorBody());
          Log.e("TAG-TAG", ""+response.body());

    }

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

    }
});

Интерфейс :

@FormUrlEncoded
@POST("api/CustomerAccount/LoginUserByMobile")
Call<TokenModel> getLoginToken( @Field("grant_type") String title,
                                @Field("app_username") String body,
                                @Field("app_password") String password,
                                @Field("mobile_number") String userId, 
                                @Field("ver_code") String code );

Клиент

    public class Clientn {

        public static final String BASE_URL = "http://192.168.1.230/MagicWord.ECommercPlatform.API/";
        public static Retrofit retrofit = null;

        public static Retrofit getClient(){
            if (retrofit == null){
                retrofit = new Retrofit.Builder()
                        .baseUrl(BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create())
                        .build();
            }
            return retrofit;
        }

    }

, но я получаю нулевой ответ, и ErrorBody имеет значение E/TAG-TAG: okhttp3.ResponseBody$1@aa2472e

Ответы [ 4 ]

0 голосов
/ 14 октября 2019

Держите имя поля и имя переменной одинаковыми

Пример:

@Field("grant_type") String grant_type,  @Field("app_username") String app_username,@Field("app_password") app_password

, чтобы вы не запутались.

Я думаю, что метод запроса должен быть POST Потому что в коде метод запроса POST , но на скриншоте метод запроса GET

0 голосов
/ 14 октября 2019

Я думаю, что проблема в вашем "ver_code, который является int или использование принимает string.is это строка или int?

0 голосов
/ 14 октября 2019

onFailure обратный вызов может быть очень полезным, попробуйте добавить к нему t.printStacktrace().

Кроме того, не передавайте объект как есть со строкой в ​​Log, потому что он просто напечатает адресчто вам не нужно.

0 голосов
/ 14 октября 2019

Я думаю, что Android перестал отвечать на запросы для нормального http в последнем API (29). Вы можете попробовать с https и проверить, возникает ли та же проблема.

...