2015-09-23 2 views
1

Это заявление о просьбе моей POST:дооснащения: отправив запрос POST

@POST("/api/geo/getLoc") 
    public void getFriendsLocation(@Field("Id") int Id, @Field("Number") String Number, @Field("FriendNumber") String FriendNumber, Callback<JsonElement> response); 

Это, как я пытаюсь послать и обработать этот запрос:

String ENDPOINT = "http://52.88.**.***"; 
FriendModel ff = new FriendModel(); 
     ff.setFriendNumber("380935275259"); 
     ff.setId(516); 
     ff.setNumber("380936831127"); 
     RestAdapter adapter = new RestAdapter.Builder() 
       .setEndpoint(ENDPOINT) 
       .build(); 
     WayfAPI api = adapter.create(WayfAPI.class); 
     api.getFriendsLocation(ff.getId(), ff.getNumber(), ff.getFriendNumber(), new Callback<JsonElement>() { 
      @Override 
      public void success(JsonElement jsonElement, Response response) { 
       String strObj = jsonElement.toString(); 
      } 

      @Override 
      public void failure(RetrofitError error) { 

      } 
     }); 

Ошибка:

retrofit.RetrofitError: WayfAPI.getFriendsLocation: @Field parameters can only be used with form encoding. (parameter #1) 

Что случилось с моей просьбой?

+1

Чувствует себя очень странно, что такой метод, как удаляющиеся местоположения друзей, отмечен как POST, а не GET. Вы уверены, что сервер рассматривает этот метод как POST? –

+0

@ Hasslarn Я знаю, что имя этого метода немного некорректно, но я уверен, что этот метод POST – neustart47

+0

Вы проверили, вызван ли метод отказа? Это может дать вам информацию о том, что пошло не так, например, HTTP-код с сервера. –

ответ

3

Я думаю, вы забудете аннотацию @FormUrlEncoded в своем объявлении метода. Это должно быть так:

@FormUrlEncoded 
@POST("/api/geo/getLoc") 
public void getFriendsLocation(@Field("Id") int Id, @Field("Number") String Number, @Field("FriendNumber") String FriendNumber, Callback<JsonElement> response); 
+0

Спасибо, thats working. У меня есть ответ с кодом 200, но мне нужно в строке JSON в ответ, но мой strObject = "". Запрос в точности правильный. Что может быть неправильным? – neustart47

+1

Это еще один вопрос, кажется, я правильно ответил на главный вопрос. Это зависит от формата данных вашего получателя от ответа. Вы должны определить POJO-объект, который описывает данные JSON в ответ, и использовать этот объект в вашем интерфейсе обратного вызова. – greenfrvr

Смежные вопросы