Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Lynatik001
38 / 32 / 13
Регистрация: 28.09.2012
Сообщений: 631
1

Retrofit 2 post запрос

27.02.2017, 18:42. Просмотров 1437. Ответов 7
Метки нет (Все метки)

Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с проблемой
как реализовать POST запрос. ( GET запрос у меня то работают, и я на аналогии с их примером и примером с нета сделал Post запрос. В реалиях я бы добавлял на сервере сразу в бд инфу. Но так как я делаю все последовательно у меня в примере ПХП функции либурда, проще говоря тестил как исправить ошибку, сначала вобще хотел передавать Bollean True\False - добавил\недобавил список продуктов который получил от андроид приложения. а то что щас пытается отправить обратно список - это експерементировал думал может не правильно перелаю булеан переменную, и решил заменить на то что уже работало в GET

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference

вот в етой строчке
Java
1
Log.d("gt", response.body().getClass().getName().toString());
возращает ошибку. Проще говоря запрос возращает нуль...


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
 
public interface orderProducts {
    @POST("/api")
    Call<List<Product>> gt(@Body List<Product> list);
}
 
 
    public static Retrofit connectDB(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("site")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
 
        return retrofit;
    }
 
 
 
 
   private  void checkout(){
        orderProducts apiService = DB.connectDB().create(orderProducts.class);
 
        Call<List<Product>> call = apiService.gt(list);
        call.enqueue(new Callback<List<Product>>() {
            @Override
            public void onResponse(Call<List<Product>> call, Response<List<Product>> response) {
                if (response.isSuccess()) {
                    Log.d("add basket: ", response.body().toString());
                } else {
                    Log.d("add basket: ", "no");
                    Log.d("gt", response.body().getClass().getName().toString());
                    // error response, no access to resource?
                }
 
            }

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public function orderProducts()
    {
        $connect;
       
        $input = Request::all();
        if(empty($input))
            $connect = false;
        else
            $connect = true;
        $fp = fopen("file111.txt", "w");
        $v["a"]="ttt";
         $collection = collect(Api::all());
        return $collection->toJson(JSON_UNESCAPED_UNICODE);
    }
Добавлено через 21 час 1 минуту
мммм?

Добавлено через 4 часа 33 минуты
не подскажет ли кто в чем проблема, или как правильно запрос то послать , ну или примеры

Добавлено через 5 часов 55 минут
розбираюсь уже битый час. Если так некто и незнает в чем проблема, то может подскажете еще какую библиотеку для связи клиент-сервер

Добавлено через 42 минуты
проблему решил, и да гори ты в аду проклятый слеш. Столько времени на тебя потратил.

приведу пример, что б понятно было где я упоролся

неработает, возращает нуль
Java
1
2
3
4
public interface orderProducts {
    @POST("/api/orderProducts")
    Call<List<Product>> gt(@Body Product list);
}
Работает
Java
1
2
3
4
public interface orderProducts {
    @POST("/api/orderProducts/")
    Call<List<Product>> gt(@Body Product list);
}
Добавлено через 14 часов 11 минут
Правда почему то на сервер не приходит пост запрос(

вот как проверял
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public function orderProducts()
    {
 
        $connect=false;
        $request = new Request;
        $txt = $request->all();
 
        if($request->isMethod('post'))
            $connect=true;
        $fp = fopen("file111.txt", "w");
        fwrite($fp, $txt);
 
        $v["a"]="ttt";
         $collection = collect($connect);
        return $collection->toJson(JSON_UNESCAPED_UNICODE);
    }
Добавлено через 1 минуту
зато ответ false получаю ХД))
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2017, 18:42
Ответы с готовыми решениями:

Retrofit 2, POST запрос, авторизация
Добрый день! На собеседовании (Junior Android Dev) мне дали задание написать...

Retrofit, JSON, @POST, @GET
Уважаемые программисты, прошу вашей помощи! Хожу на курсы по разработке...

Необходим пример по retrofit c POST запросом
Здравствуйте, предложите пожалуйста пример по retrofit c POST запросом Только...

RX и Retrofit запрос, который ничего не возвращает
Делаю запросы так: subscription = getApi().getData(token) ...

post запрос
public String postData() { String str = null; HttpClient...

7
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
27.02.2017, 20:42 2
Lynatik001, проверь сначала в постмане, он уж точно работает и отсылает как нужно. Если постман говорит false - значит косяк на стороне твоего скрипта, а это вопрос не нашей ветки форума. А для начала погуглить "php get body of post <ваше фреймворк>".
Цитата Сообщение от Lynatik001 Посмотреть сообщение
$request->all();
как минимум смущает меня. но я не эксперт в php.
0
Lynatik001
38 / 32 / 13
Регистрация: 28.09.2012
Сообщений: 631
27.02.2017, 21:40  [ТС] 3
Цитата Сообщение от demixdn Посмотреть сообщение
как минимум смущает меня. но я не эксперт в php.
проверял get запрос видит, если заходить через браузер, и вводить GET параметр.
а вот так непойми ли то я не правильно данные ловлю ли то еще что. что за постман
0
klim76
20 / 14 / 2
Регистрация: 10.06.2016
Сообщений: 144
28.02.2017, 00:53 4
в гугль хроме приложения, там ищите postman. Мегавещь!
0
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
28.02.2017, 12:04 5
klim76, Postman не только в браузере. У них появилась и десктоп версия. Так что можно выбирать.
1
Lynatik001
38 / 32 / 13
Регистрация: 28.09.2012
Сообщений: 631
28.02.2017, 17:08  [ТС] 6
блин не видит post данные вникакую, не хочет их находить, зато get данные прекрасно видит
0
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,824
Завершенные тесты: 1
28.02.2017, 17:13 7
почему бы тебе не попарить мозги людям в разделе php?
0
Lynatik001
38 / 32 / 13
Регистрация: 28.09.2012
Сообщений: 631
28.02.2017, 17:41  [ТС] 8
так и сделаю, после того как еще немного по пытаюсь розобратся сам
0
28.02.2017, 17:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2017, 17:41

POST Запрос
подскажите что здесь не так, ошибка возникает на строке HttpResponse...

POST запрос
Существует активити &quot;Register&quot;, содержащий несколько элементов edittext....

Post запрос
Как отправить Post запрос и принять ответ сервера ? Exlipce


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru