CodeGym /Java Course /मॉड्यूल 3 /HttpRequest मध्ये मुख्य भाग जोडत आहे

HttpRequest मध्ये मुख्य भाग जोडत आहे

मॉड्यूल 3
पातळी 10 , धडा 2
उपलब्ध

3.1 शरीर प्रकाशक

मला आशा आहे की तुम्ही विसरला नसेल की GET विनंत्यांव्यतिरिक्त , PUT आणि POST विनंत्या देखील आहेत , जेव्हा तुम्हाला विनंतीमध्ये request body, म्हणजे विनंती मुख्य भाग जोडण्याची आवश्यकता असते.

यासाठी वर्गात HttpRequestएक विशेष आतील वर्ग आहे BodyPublisher. जरी हा तांत्रिकदृष्ट्या एक इंटरफेस आहे ज्यामध्ये अनेक अंमलबजावणी आहेत, ज्याची आपण खाली चर्चा करू

आणि आम्ही सर्वात सोप्यासह प्रारंभ करू - विनंती शरीराची अनुपस्थिती. होय, ते घडते.


HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .POST(HttpRequest.BodyPublishers.noBody())
   .build();

साधे आणि सुंदर.

स्ट्रिंगचे 3.2()

दुसरा सर्वात सामान्य पर्याय म्हणजे विनंती मुख्य भाग म्हणून काही स्ट्रिंग पास करणे. हे अगदी सोप्या पद्धतीने केले जाते:


HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("Content-Type", "text/plain;charset=UTF-8")
   .POST(HttpRequest.BodyPublishers.ofString("Hello"))
   .build();

तसे, आपण प्रसारित स्ट्रिंगचे एन्कोडिंग सेट करू शकता. HTTP सर्व्हर ज्यावर विनंती पाठवली आहे ते UTF8 वर कार्य करत नसल्यास ते खूप उपयुक्त ठरू शकते.


HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .POST(HttpRequest.BodyPublishers.ofString("Hello", Charset. US-ASCII)))
   .build();

3.3 ऑफ फाइल()

शेवटी, तुम्हाला POST विनंतीला फाइल संलग्न करायची आहे . अशा प्रकारे तुमचे अवतार सहसा सर्व्हरवर अपलोड केले जातात. हे करण्यासाठी, आपल्याला स्थानिक फाइल ofFile()कोठे हस्तांतरित करायची या पद्धतीवर कॉल करणे आवश्यक आहे:Path


Path avatar = Path.of("c://avatar.jpeg");
 
HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("Content-Type", "image/jpeg")
   .POST(HttpRequest.BodyPublishers.ofFile(avatar))
   .build();

3.4 ofByteArray()

सर्व्हरवर बाइट्सचा संच पाठवणे ही दुसरी सामान्य परिस्थिती आहे. उदाहरणार्थ, तुम्ही बाइट्सचा संच म्हणून काही ऑब्जेक्ट सीरियलाइज केले आहे, काहीतरी एनक्रिप्ट केले आहे किंवा फक्त काही डेटा बफर पाठवायचा आहे. यासाठी एक पद्धत आवश्यक आहे .ofByteArray().

ही पद्धत पॅरामीटर म्हणून बाइट्सची अॅरे घेते. उदाहरण:


byte[] data = "My Secret Message".getBytes();
byte[] dataEncripted = SuperEncriptor.encript(data);
 
HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("Content-Type", "application/octet-stream")
   .POST(HttpRequest.BodyPublishers.ofByteArray(dataEncripted))
   .build();

Inputstream() चे 3.5

शेवटी, शेवटची परंतु सर्वात मनोरंजक परिस्थिती पोस्ट विनंतीशीInputStream संलग्न करणे आहे .

यासाठी एक विशेष कार्य आहे ofInputStream(). आणि ती खूप हुशार आहे. हे तुम्हाला डेटा स्ट्रीम मधून स्ट्रीममध्ये ट्रान्सफर आयोजित करण्याची, POS विनंतीला डेटा स्ट्रीम संलग्न करण्याची परवानगी देते जी अद्याप उघडलेली नाही.

तुम्हाला फंक्शनमध्ये फंक्शन पास करणे आवश्यक आहे ofInputStream(), जे परिणामी एक प्रवाह परत करेल InputStream.

उदाहरण:


byte[] data = "My Secret Message".getBytes();
//wrapping an array of bytes into a stream.
InputStream is = new ByteArrayInputStream(data);
 
HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("Content-Type", "application/octet-stream")
   .POST(HttpRequest.BodyPublishers.ofInputStream (() -> is;))
   .build();

मी येथे बागेला कुंपण घालण्याचा त्रास घेतला नाही, परंतु मला वाटते की तुम्हाला तत्त्व समजले आहे. त्यांनी असे का केले? आपण जवळजवळ नेहमीच वापरू शकता ofByteArray(). परंतु जर तुम्हाला डेटा एसिंक्रोनस पाठवायचा असेल किंवा तुम्हाला काही विशेषतः जटिल परिस्थिती लागू करायची असेल तर तुम्ही ही पद्धत वापरू शकता.

टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION