|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
||||||
Отправка post запроса на сервер (okhttp)25.06.2019, 11:41. Показов 5585. Ответов 16
Метки нет (Все метки)
Доброго времени суток. Столкнулся с проблемой отправки post запроса на сервер. Рекомендуют использовать okhttp или retrofit. Retrofit показался мне сложнее, поэтому решил использовать okhttp. Посмотрев документацию нашел код отправки запроса:
public static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); Для решения ошибки предлагается переделать get в parse. Но не уверен, на сколько это будет правильно. Пытался закинуть весь код в метод, чтобы потом вызвать его в обработчике нажатия кнопки, но тогда показывает ошибки в url, json, post и т.д. По нажатию кнопки должно браться значение из EditText и передаваться в отправщик запроса, и потом возвращаться ответное значение от сервера, с которым дальше необходимо проводить операции. Подскажите, как решить данную проблему ?
0
|
||||||
| 25.06.2019, 11:41 | |
|
Ответы с готовыми решениями:
16
Выполнение POST запроса с использованием okhttp Отправка POST-запроса на сервер Отправка POST запроса |
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
||||||
| 25.06.2019, 11:50 | ||||||
|
Так норм:
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
|||||||
| 26.06.2019, 10:10 [ТС] | |||||||
|
Вот код обработки нажатия на кнопку в activity:
0
|
|||||||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 26.06.2019, 10:59 | |
|
А что здесь должно работать? Запросы идут всегда в другом потоке и, как правило, выполняются дольше других операций с view.
А ошибку надо смотреть во вкладке logcat.
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
||
| 26.06.2019, 11:32 [ТС] | ||
|
Кликните здесь для просмотра всего текста
06-26 13:17:47.132 17784-17784/com.example.evotorproject E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.evotorproject, PID: 17784 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInfl ater$DeclaredOnClickListener.onClick(App CompatViewInflater.java:390) at android.view.View.performClick(View.java :4782) at android.view.View$PerformClick.run(View. java:19879) at android.os.Handler.handleCallback(Handle r.java:739) at android.os.Handler.dispatchMessage(Handl er.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(Activity Thread.java:5281) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.j ava:372) at com.android.internal.os.ZygoteInit$Metho dAndArgsCaller.run(ZygoteInit.java:912) at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:707) Caused by: java.lang.reflect.InvocationTargetExcept ion at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.j ava:372) at androidx.appcompat.app.AppCompatViewInfl ater$DeclaredOnClickListener.onClick(App CompatViewInflater.java:385) at android.view.View.performClick(View.java :4782)* at android.view.View$PerformClick.run(View. java:19879)* at android.os.Handler.handleCallback(Handle r.java:739)* at android.os.Handler.dispatchMessage(Handl er.java:95)* at android.os.Looper.loop(Looper.java:135)* at android.app.ActivityThread.main(Activity Thread.java:5281)* at java.lang.reflect.Method.invoke(Native Method)* at java.lang.reflect.Method.invoke(Method.j ava:372)* at com.android.internal.os.ZygoteInit$Metho dAndArgsCaller.run(ZygoteInit.java:912)* at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:707)* Caused by: android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardP olicy.onNetwork(StrictMode.java:1147) at java.net.InetAddress.lookupHostByName(In etAddress.java:418) at java.net.InetAddress.getAllByNameImpl(In etAddress.java:252) at java.net.InetAddress.getAllByName(InetAd dress.java:215) at okhttp3.Dns$1.lookup(Dns.java:40) at okhttp3.internal.connection.RouteSelecto r.resetNextInetSocketAddress(RouteSelect or.java:185) at okhttp3.internal.connection.RouteSelecto r.nextProxy(RouteSelector.java:149) at okhttp3.internal.connection.RouteSelecto r.next(RouteSelector.java:84) at okhttp3.internal.connection.StreamAlloca tion.findConnection(StreamAllocation.jav a:214) at okhttp3.internal.connection.StreamAlloca tion.findHealthyConnection(StreamAllocat ion.java:135) at okhttp3.internal.connection.StreamAlloca tion.newStream(StreamAllocation.java:114 ) at okhttp3.internal.connection.ConnectInter ceptor.intercept(ConnectInterceptor.java :42) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:147 ) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:121 ) at okhttp3.internal.cache.CacheInterceptor. intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:147 ) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:121 ) at okhttp3.internal.http.BridgeInterceptor. intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:147 ) at okhttp3.internal.http.RetryAndFollowUpIn terceptor.intercept(RetryAndFollowUpInte rceptor.java:126) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:147 ) at okhttp3.internal.http.RealInterceptorCha in.proceed(RealInterceptorChain.java:121 ) at okhttp3.RealCall.getResponseWithIntercep torChain(RealCall.java:200) at okhttp3.RealCall.execute(RealCall.java:7 7) at com.example.evotorproject.RequestSenderC lass.post(RequestSenderClass.java:23) at com.example.evotorproject.IntegrashionLi b.BtnClick(IntegrashionLib.java:41) at java.lang.reflect.Method.invoke(Native Method)* at java.lang.reflect.Method.invoke(Method.j ava:372)* at androidx.appcompat.app.AppCompatViewInfl ater$DeclaredOnClickListener.onClick(App CompatViewInflater.java:385)* at android.view.View.performClick(View.java :4782)* at android.view.View$PerformClick.run(View. java:19879)* at android.os.Handler.handleCallback(Handle r.java:739)* at android.os.Handler.dispatchMessage(Handl er.java:95)* at android.os.Looper.loop(Looper.java:135)* at android.app.ActivityThread.main(Activity Thread.java:5281)* at java.lang.reflect.Method.invoke(Native Method)* at java.lang.reflect.Method.invoke(Method.j ava:372)* at com.android.internal.os.ZygoteInit$Metho dAndArgsCaller.run(ZygoteInit.java:912)* at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:707) Если честно, не особо понимаю какие тут ошибки, тк опыта разработки у меня мало.
0
|
||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 26.06.2019, 11:43 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
||
| 26.06.2019, 13:08 [ТС] | ||
|
0
|
||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 26.06.2019, 13:09 | |
|
Просто возьми retrofit, там всё идёт из коробки.
1
|
|
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
||
| 26.06.2019, 13:13 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
|||||||||||||||||
| 27.06.2019, 10:16 [ТС] | |||||||||||||||||
|
1) Класс-модель, который обрабатывает ответ от сервера. После запроса возвращаются данные name, last_name, bonus. Кликните здесь для просмотра всего текста
2) Класс, используя метод которого мы отправляем запрос Кликните здесь для просмотра всего текста
3) Интерфейс с методом обработки 1 класса Кликните здесь для просмотра всего текста
По нажатию кнопки я беру введенное значение (cardnumber) и отправляю запрос. И какой все-таки метод нужно будет вызывать из обработчика нажатия кнопки ? GetApi из requestSender (2 класс) ?
0
|
|||||||||||||||||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 27.06.2019, 10:39 | |
|
Было бы лучше, если бы во "втором классе" было только создание билдера retrofit и клиента okhttp (если надо). Метод getData это уже и есть твой запрос, нужно лишь где-то его вызвать и обработать ответ.
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
||
| 27.06.2019, 11:05 [ТС] | ||
|
Вы имеете ввиду, что надо в классе RequestSender убрать GsonBuilder и оставить только Retrofit.Builder ? И получается мне нужно будет вызвать getData, который отправит такой запрос: http://example.ru/client?cardnumber="мое значение edittext", из обработчика кнопки и обработать результат ?
0
|
||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 27.06.2019, 11:39 | |
|
Я хотел сказать, что по структуре второй класс отвечает за инициализацию ретрофита, 3й - интерфейс запроса, а 1й - тупо модель, в которую запихаются данные. Соответственно, где-то, предположим в обработчике нажатия, надо взять инициализированный ретрофит и вызвать метод с колбеками. Здесь подробно всё описано:
http://developer.alexanderklim... trofit.php
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
|||||||||
| 27.06.2019, 14:03 [ТС] | |||||||||
Добавлено через 1 час 38 минут
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
||||||||||||||||
| 29.06.2019, 18:54 [ТС] | ||||||||||||||||
|
ExFau$t
Подскажите пожалуйста. Я остановился на том, что создал (как мне кажется) все необходимые методы и вызываю их. Но ответ от сервера не приходит, постоянно попадает в catch. В чем может быть проблема ? Постоянно возвращается "не прошел". В манифесте добавлено <uses-permission android:name="android.permission.INTERNE T" />. Код asynctaks, который выведет значение answer в алерт Кликните здесь для просмотра всего текста
Сам код отправки запроса: Кликните здесь для просмотра всего текста
Обработчик нажатия кнопки: Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
|
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 477
|
|
| 29.06.2019, 23:14 | |
|
Можно не делать AsyncTask.
Вместо client.newCall(request).execute(); выполнить client.newCall(request).enqueue(new Callback() {... Главное не забыть, что обращение из колбэков к UI надо делать через Handler.
0
|
|
|
0 / 0 / 0
Регистрация: 26.05.2019
Сообщений: 26
|
|||
| 30.06.2019, 15:40 [ТС] | |||
0
|
|||
| 30.06.2019, 15:40 | |
|
Помогаю со студенческими работами здесь
17
Отправка POST запроса Отправка POST запроса Отправка POST запроса серверу Не работает отправка POST запроса Отправка Post запроса в Android предложении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|