Нативная разработка мобильных приложений


Создание запроса HTTP POST



Download 3,69 Mb.
Pdf ko'rish
bet105/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   101   102   103   104   105   106   107   108   ...   228
Bog'liq
Нативная разработка мобильных приложений

Создание запроса HTTP POST
В этом разделе мы используем общедоступную бесплатную службу 
jsonplace-
holder.typicode.com
, которой будем посылать данные в запросах POST. Это по
-
может нам убедиться, что наш код действительно отправляет данные. В част
-
ности, мы будем использовать конечную точку создания ресурса (
https://oreil.
ly/2iZxz
).
Изменим предыдущий пример, добавив отправку пустого запроса POST:
Java
public class Networking {
public static void saveRemoteData() throws IOException {
URL url = new URL("https://jsonplaceholder.typicode.com/posts");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
int data;
while ((data = connection.getInputStream().read()) != -1) {
System.out.print((char) data);
}
}
}


158

Сетевые взаимодействия
Kotlin
@Throws(IOException::class)
fun saveRemoteData() {
val url = URL("https://jsonplaceholder.typicode.com/posts")
val connection = url.openConnection() as HttpsURLConnection
connection.requestMethod = "POST"
var data: Int = connection.inputStream.read();
while (data != -1) {
print(data.toChar())
data = connection.inputStream.read()
}
}
Приглядевшись, можно заметить только два небольших изменения: 
1) мы привели значение, возвращаемое вызовом 
openConnection
, к типу 
Http­
sUrlConnection
вместо 
HttpUrlConnection
, потому что в адресе используется 
схема HTTPS;
2) установили метод запроса POST вместо используемого по умолчанию 
GET.
Этот код исправно работает, и в результате вы должны увидеть идентифика
-
тор вновь созданного вами объекта, но, кроме этого, ничего больше не проис
-
ходит. На практике часто желательно отправить некоторые данные в запросе. 
Для этой цели можно использовать параметры, заголовки или тело запроса. 
Взаимодействуя с данной службой, мы будем посылать код JSON в теле запроса.
Объект соединения имеет не только встроенный поток ввода 
InputStream

но также поток вывода 
OutputStream
. Однако для работы с ним требуется при
-
ложить немного дополнительных усилий – нужно вызвать метод 
connection.
setDoOutput(true)
, чтобы получить возможность вывода в этот поток.
Снова изменим пример:
Java
public class Networking {
public static void saveRemoteData() throws IOException {
URL url = new URL("https://jsonplaceholder.typicode.com/posts");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
String json = "{title:'foo', body:'bar', userId:1}";
connection.getOutputStream().write(json.getBytes());
int data;
while ((data = connection.getInputStream().read()) != -1) {
System.out.print((char) data);
}
}
}
Kotlin
@Throws(IOException::class)
fun saveRemoteData() {


Android 

159
val url = URL("https://jsonplaceholder.typicode.com/posts")
val connection = url.openConnection() as HttpsURLConnection
connection.requestMethod = "POST"
connection.doOutput = true
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
val json = "{title:'foo', body:'bar', userId:1}"
connection.outputStream.write(json.toByteArray())
var data: Int = connection.inputStream.read();
while (data != -1) {
print(data.toChar())
data = connection.inputStream.read()
}
}
Теперь мы отправляем некоторые данные, которые сервер может обрабо
-
тать по своему усмотрению. Как видите, для получения новых возможностей 
каждый раз приходится прилагать чуть больше усилий и уделять чуть больше 
внимания, но если начать с самых основ (первый пример), можно получить 
хорошее представление о том, как все это работает.
Работая с сетевыми библиотеками, вы быстро заметите, что по большей 
части приходится выполнять одни и те же действия, даже если за кулисами 
библиотеки используют совершенно разные операции. Разрабатывая первую 
версию загрузчика двоичных файлов для своего текущего работодателя, мы 
использовали разные библиотеки. Позднее мы решили выполнять все сетевые 
запросы (для получения изображений, обращений к REST API, загрузки файлов 
и т. д.) с помощью единственного HTTP-клиента, поэтому я заварил кофе и ре
-
шил посвятить день переделке нашего загрузчика для работы с OkHttp. Я не 
помню, сколько времени это заняло или сколько строк изменилось, но скажу 
точно, что к обеду все, включая тесты, было готово (читай: это оказалось прос-
той задачей).

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   101   102   103   104   105   106   107   108   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish