2016-01-27 3 views
1

Я использую модифицированную библиотеку для запроса по почте. Но я получаю пустую ошибку области поля с сервера. Поэтому мои параметры («signin [password] и signin [username]») пустуют на сервер. Где моя ошибка? СпасибоПараметры дооснащения пустые для сервера

Retrofit retrofit = new Retrofit.Builder() 
         .baseUrl("http://myurl.com/") 
         .addConverterFactory(GsonConverterFactory.create()) 
         .build(); 
       Interfacem service = retrofit.create(Interfacem.class); 
       SignBody body=new SignBody("username","pass"); 

       Call<ResponseBody> result =service.getResponse(body); 


       result.enqueue(new Callback<ResponseBody>() { 
        @Override 
        public void onResponse(Response<ResponseBody> response) { 
         try { 

          System.out.println(response.body().string().toString()); 
          System.out.println(response.errorBody().string().toString()); 


         } catch (IOException|NullPointerException e) { 
          e.printStackTrace(); 
         } 

        } 

        @Override 
        public void onFailure(Throwable t) { 
         t.printStackTrace(); 
        } 
       }); 

SignBody класс, как показано ниже:

public class SignBody { 

    @SerializedName("signin[username]") @Expose private String username; 
    @SerializedName("signin[password]") @Expose private String password; 

    public SignBody(String username, String password) { 
     this.username = username; 
     this.password = password; 
    } 

} 

наконец Interfacem.class:

public interface Interfacem { 
    @POST("/login") 
    Call<ResponseBody> getResponse(@Body SignBody body); 

} 

Существует не проблема, когда я пытался почтальона же думать. postman screenshot

+0

Вы уверены, что вы правильно прочитали данные на стороне сервера? Возможно, вы пытаетесь прочитать из заголовка запроса? –

ответ

0

Похоже, что в вашем классе тела нет геттеров.

+0

Я использовал методы set и get в классе signbody, но это не решение –

0

Изменить класс интерфейса, как (удалить слэш в пути)

public interface Interfacem { 
     @POST("login") 
     Call<ResponseBody> getResponse(@Body SignBody body); 
    } 

Вы можете обратиться причину в моем ответе here

+0

Вы правы, но это не решение –

+0

вы уверены, что ваш запрос? Я имею в виду, вы попробовали один раз на другом инструменте, например, Почтальон или что-то еще/ –

+0

Да, когда я пробовал почтальон, нет никаких проблем –

2

Какую версию вы используете ретрофитом? Ниже приведен код версии 2.0. Если какой-либо заголовок требует, пожалуйста, проверьте. Если вы можете поделиться URL-адресом, именем пользователя или паролем. Я проверю.

public interface Interfacem { 

    @FormUrlEncoded 
    @POST("login") 
    Call<ResponseBody> getResponse(@Field("username") String username,@Field("password")String password); 
} 


Retrofit retrofit = new Retrofit.Builder() 
         .baseUrl("http://myurl.com/") 
         .build(); 

       Interfacem service = retrofit.create(Interfacem.class); 
       Call<ResponseBody> result =service.getResponse("myUsername","myPassword"); 
       result.enqueue(new Callback<ResponseBody>() { 
        @Override 
        public void onResponse(Response<ResponseBody> response) { 
         try { 
          System.out.println(response.body().string().toString()); 
         } catch (IOException|NullPointerException e) { 
          e.printStackTrace(); 
         } 

        } 

        @Override 
        public void onFailure(Throwable t) { 
         t.printStackTrace(); 
        } 
       }); 
+0

мои параметры должны быть signin [имя пользователя] и signin [пароль] –

+0

Можете ли вы поделиться своим результатом почтальона? –