Использую Retrofit2, хочу отправить на сервер POST параметры.
public interface ServerApi {
@GET("Singleton")
Call<String> getJSON();
@POST("Singleton")
Call<String> senDDudes(@Query("author") String author);
}
Использую этот интерфейс для отправки данных. При заходе на сервер данные получаются в POST формате, а потом возвращаются в JSON формате.
Retrofit rt;
rt=new Retrofit.Builder().baseUrl("http://10.0.2.2/").addConverterFactory(ScalarsConverterFactory.create()).addConverterFactory(GsonConverterFactory.create()).build();
ServerApi sapi=rt.create(ServerApi.class);
Call<String> msg=sapi.senDDudes("Dude","bude");
msg.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
System.out.println(response.body().toString());
}
@Override
public void onFailure(Call<String> call, Throwable t) {
System.out.println(t.toString());
}
});
Проблема в том, что данные в виде POST не приходят на сервер. Возврат есть, а вот приема нет. Проверяю с помощью echo $_POST['author'] на самом сервере.
НО если я использую вместо аннотации @POST аннотацию @GET, и вывожу соответственно echo $_GET['author'], данные выводятся.
В Retrofit я новичок, поэтому учитывайте пожалуйста это.
Параметр с аннотацией @Query
управляет параметрами query
запроса (как ни странно). Поэтому в php вы этот параметр можете достать с помощью $_GET
(как известно, GET
запрос не имеет тела, и логично что параметры запроса достаются из query url
-a).
Чтобы отправить тело с POST
-запросом:
interface Foo {
// Вся соль здесь
@POST("/path")
FooResponse postJson(@Body FooRequest body);
}
Класс десериализованного тела запроса:
public class FooRequest {
final String foo;
final String bar;
FooRequest(String foo, String bar) {
this.foo = foo;
this.bar = bar;
}
}
Делаете запрос:
FooResponse = foo.postJson(new FooRequest("kit", "kat"));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотелось бы задавать позиционирование текста (annotate) от верхнего левого края, а не от нижнего левого края
нужно организовать отображение картинки с описанием к нему при выборе option в select box, которое будет выводится слева от select
Есть хеш, который я генерирую функцией, после я помещаю его в таблицу с пользователями, после я использую команду setcookie и там присваиваю значения...
Пользуюсь софтом UnoConv на Ubuntu для конвертации файлов презентации (ppt, pptx, odt) в pdf далее в png