2017-01-15 4 views
0

Я новичок в разработке Android, и я не знаю, как это сделать, я искал в Интернете, но все, что я пробовал до сих пор, не работает. То, что я пытаюсь сделать, - отправить строку на сервер, а ключ должен быть «interval =». Это то, что у меня есть до сих пор, но это не сработает. Я получаю строку time2 от spinner, но пока это не имеет значения, потому что я знаю, что часть счетчика работает, а POST - нет.Android, Модернизация 2 Запрос POST

PostInterface service = retrofit.create(PostInterface.class); 
    service.postTime(time2); 

и интерфейс

@FormUrlEncoded 
@POST 
Call<Response> postTime(@Field("interval=") String time); 

Что я должен сделать сеть и как я могу проверить его с http://requestb.in/ никогда (не использовал его раньше, я только что видел его можно использовать для тестирования POST)?

ответ

0

если вы публикуете поле формы, вы должны удалить «=» от «Интервал =» поля являются ключевыми и ценности, нет необходимости в «=» , если вы хотите тестовый клиент для сообщений, и вы получите можно попробовать postman

пожалуйста уточнить ваш вопрос более, если это не то, что вы ожидали в ответ


в @Mickael Monsang Ответ «не использовать call.execute непосредственно лучше использовать

call.enqueue(new Callback<String>() { 
     @Override 
     public void onResponse(Call<Response> call, Response<Response> response) {}} 
     @Override 
     public void onFailure(Call<String> call, Throwable t) { 

      } 
     } 
    }); 
+0

Я пробовал без «=», и он все еще не работает. Чтобы прояснить вопрос: у меня есть активность с двумя текстовыми комментариями, spiiner и button. В первом текстовом представлении говорится «Выберите интервал», а справа от него есть прядильщик (вы можете выбрать между 15мин, 30мин, 1 ч, 2 ч и 3 ч). Затем, когда вы выбираете интервал, который вы хотите, по нажатию кнопки выбранный интервал должен быть отправлен на сервер (так что если вы выбрали 15 минут на сервере, должно быть отображено 15, в строке time2 всего 15, без мин). В другом текстовом представлении сказано: «Вы выбрали интервал xxmin. – mustangws

1

Почему вы используете модификацию в первую очередь? Это хорошая библиотека, но если вы новичок в Android, я предлагаю начать с HttpClient.

В вашем примере метод execute не был вызван.

Retrofit retrofit = new Retrofit.Builder() 
.baseUrl("http://requestb.in/") 
.addConverterFactory(GsonConverterFactory.create()) 
.build(); 
PostInterface service = retrofit.create(PostInterface.class); 
Call<Response> call = service.postTime(time2); 
call.execute() 

В интерфейсе (замените ххй маркер заданного requestbin)

@FormUrlEncoded 
@POST("xxxxxxx") 
Call<Response> postTime(@Field("interval=") String time); 

пса: Имейте в виде, что вы не должны запускать любой HTTP вызовов на главном потоке.

+0

И я не уверен, что вы хотите использовать« интервал = »или« интервал »пользователя в качестве ключа, но я рекомендую удалить = из вашего ключа, @Field (" интервал ") –

+0

Мой друг рекомендовал модифицировать меня, я использовал его для GET, потому что я нашел учебник, и он работал, поэтому я попытался использовать его для POST. Спасибо за ответ. – mustangws

+0

Я получаю« Необработанное исключение: java.io.IOException "на вызов.execute(), как его исправить? – mustangws

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