13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 153
1

Как правильно отправлять post запрос на сервер используя класс HttpUrlConnection

27.02.2019, 15:42. Показов 1227. Ответов 10

Всех приветствую. Мне нужно отправлять статистику по использованию моего приложения на сервер. Поскольку будет отправляться очень много данных, я предпочёл использовать метод post для отправки запроса. Пока что мне не нужно получать ответ от сервера хотя, возможно, в будущем я буду его обрабатывать. Поскольку HttpClient от apachi не рекомендован google для использования на самых новых версиях android, я решил использовать HttpUrlConnection. Если Вас не затруднит, не могли бы Вы пожалуйста написать минимальный пример для отправки post запроса с использованием этой или, если есть, более лучшей библиотеки, учитывая, что на сервер могут отправляться кириллические данные, строка, указывающая эти данные, будет иметь такой вид: param0=value0&param1=value1...&paramn=valuen и что эти данные будут отправляться по адресу http://server.domain_name/statistics.php. Я находил некоторые примеры в интернете, но во-первых поскольку они в основном были на англоязычных сайтах я не уверен, что кириллица отправится корректно, т.е нужно делать какие-то танцы с бубном со стороны моего кода (с сервером, на мой взгляд, проблем не будет, поскольку все данные будут читаться в кодировке utf-8), а во-вторых я не понял из этих примеров, когда нужно закрывать подключение, ведь если я закрою его раньше, чем произойдёт подключение или отправятся данные, данные не отправятся на сервер. Поэтому я очень прошу людей, более опытных в отправке post запросов с возможной кириллицей в android на java, чем я, написать минимальный пример, который отправляет подобные запросы, или дать ссылку на работающий пример, учитывая что на сервер может отправляться кириллица и что подключение нужно закрыть в подходящее для этого время. Заранее всем огромное спасибо за помощь.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2019, 15:42
Ответы с готовыми решениями:

Как отправлять POST запрос?
Здравствуйте уважаемые форумчани...Помогите пожалуйста с одним вопросом... Как отправлять POST...

Как отправлять JSON файлы на сервер методом POST
Приложение должно принимать и отправлять дсон файлы на PHP сервер. С приёмом вреде всё хорошо, но...

Примитивная реализация HttpUrlConnection , POST запрос с параметрами
Привет! Написал небольшую проверку доступа к ресурсу/сайту. Просто проверку, по HEADеру. Если...

POST запрос на получение токена посредством HttpUrlConnection
Мне необходимо получить доступ из Java приложения к RESTful веб сервису, использующему...

10
1479 / 1104 / 399
Регистрация: 08.05.2012
Сообщений: 4,991
27.02.2019, 15:55 2
Цитата Сообщение от КАВ Посмотреть сообщение
post запрос на сервер используя класс HttpUrlConnection
Использовать Retrofit2 или что-то ещё.

Добавлено через 1 минуту
Проблемы с кириллицей остались в далёких нулевых.
0
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 153
27.02.2019, 16:26  [ТС] 3
А почему использование класса HttpUrlConnection плохой вариант,у него есть проблемы с кириллицей или с отправкой post запросов на сервер?
0
1479 / 1104 / 399
Регистрация: 08.05.2012
Сообщений: 4,991
27.02.2019, 17:01 4
Разве я что-то сказал из серии хороший/плохой, проблемы/не проблемы? Зачем упарываться на HttpUrlConnection и писать всё руками, если есть крутые фреймворки, где уже всё написано, продумано, безопасно?
0
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
27.02.2019, 17:21 5
боже, если там всем платили хотя бы до доллару каждый раз когда надо очередного переубедить что никто сейчас в здравом уме не использует голый httpurlconnection...

если reftrofit2 - непосильная штука то хотя бы okhttp
0
1479 / 1104 / 399
Регистрация: 08.05.2012
Сообщений: 4,991
27.02.2019, 17:31 6
Ну или Volley.
0
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
27.02.2019, 17:34 7
Цитата Сообщение от ExFau$t Посмотреть сообщение
Volley.
0
1479 / 1104 / 399
Регистрация: 08.05.2012
Сообщений: 4,991
27.02.2019, 17:36 8
Зато проще пареной репы, новичкам нравится.
0
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 153
27.02.2019, 18:27  [ТС] 9
Я посмотрел на предложенную Вами библиотеку, т.е на Retrofit2. В принципе, она мне очень понравилась и, возможно, я её буду использовать, тем более раз, как я понял, проблем с кириллицей быть не должно, если всё правильно настроено на сервере, но мне непонятны четыре момента: 1. Я прочитал, что можно как-то сразу скормить библиотеке весь адрес, включая параметры запроса и тогда baseurl будет проигнорирован. Если это так, то подскажите пожалуйста, как это сделать. Просто я уже написал метод, который генерирует строку запроса, а поскольку параметров запроса у меня очень много, мне не очень хочется его переписывать под нужды этой библиотеки. При этом мне также хотелось бы уточнить, можно ли, и если да, то как, на ходу менять адрес для запросов, т.е если основной сервер недоступен, тут же отправить этот запрос на альтернативный сервер? 2. Можно ли, и если да, то как, просто получить весь код обычной html страницы для его дальнейшего парсинга, учитывая тот факт, что в таком случае никаких параметров запроса у меня не будет, или мне придётся пользоваться классом HttpUrlConnection, как у меня это сделано сейчас. 3. Правильно ли я понял, что метод onResponse вызовится даже тогда, если вызовиться метод onFailure (названия методов могут быть написаны неправильно) и эти методы вызываются в основном потоке? 4. Можно ли, и если да, то как, отправлять файл или stream на серверв качестве параметра запроса с помощью этой библиотеки?
0
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 153
28.02.2019, 15:40  [ТС] 10
По поводу записи в файл, даже с отслеживанием прогресса, я нашёл тут: https://stackoverflow.com/ques... retrofit-2
Правда я не знаю, какое из этих решений наиболее правильное, т.к, как я понял, почему-то в retrofit 2 файл записывается на сервер дважды,или эта проблема уже исправлена? Остальные вопросы мне всё ещё непонятны.
0
1479 / 1104 / 399
Регистрация: 08.05.2012
Сообщений: 4,991
28.02.2019, 16:05 11
1. Мне не охота рыскать по докам и искать (далее - 1), я использую dagger и разные базовые url разнесены на разные api в модуле, типо такого:
Java
1
2
3
4
5
6
7
8
@Provides
    @Singleton
    public SomeApi provideSomeApi(Retrofit.Builder retrofitBuilder) {
        return retrofitBuilder
                .baseUrl("https://api.blablacom/v1/")
                .build()
                .create(SomeApi.class);
    }
2. Что в ResponseBody воткнёшь, то и получишь. В принципе, любой запрос можно строкой вывести, может есть и что-то готовое, но (1).
3. Запрос либо успешен, либо нет.
4. В post лучше отправлять в RequestBody или MultipartBody.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2019, 16:05

Как отправлять get, post запрос а затем обработать в формате json?
Как на android srudio отправить post, ger запрос, затем обработать ответ в формате json

Как правильно отправлять запрос
Правильно ли я расставил кавычки ? Все по разному ставят кавычки, хотелось бы узнать как по книжке...

Как правильно отправлять ajax-запрос?
Всем привет! Пытаюсь разобраться с ajax-запросами. Вот код, который по хорошему должен скачивать...

Как правильно отправлять запрос из вне в django?
Добрый вечер! Подскажите пожалуйста. Всю голову сломал, весь гугл перерыл. Все что смог найти это...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru