CodeGym/Java Course/मॉड्यूल 3/HttpRequest में बॉडी जोड़ना

HttpRequest में बॉडी जोड़ना

उपलब्ध

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 ByteArray()

एक अन्य सामान्य परिदृश्य सर्वर पर बाइट्स का एक सेट भेजना है। उदाहरण के लिए, आपने कुछ ऑब्जेक्ट को बाइट्स के सेट के रूप में क्रमबद्ध किया है, कुछ एन्क्रिप्ट किया है, या बस कुछ डेटा बफर भेजना चाहते हैं। इसके लिए एक विधि की आवश्यकता होती है .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();

3.5 ofInputStream()

अंत में, अंतिम लेकिन कम से कम दिलचस्प परिदृश्य एक पोस्ट अनुरोधInputStream से जुड़ा हुआ है ।

इसके लिए एक खास फंक्शन होता है ofInputStream()। और वह बहुत होशियार है। यह आपको स्ट्रीम से स्ट्रीम में डेटा के हस्तांतरण को व्यवस्थित करने की अनुमति देता है, डेटा स्ट्रीम को एक पीओएस अनुरोध में संलग्न करता है जो अभी तक खुला नहीं है।

आपको फ़ंक्शन में एक फ़ंक्शन पास करने की आवश्यकता है 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()। लेकिन अगर आप एसिंक्रोनस रूप से डेटा भेजना चाहते हैं या आपको कुछ विशेष रूप से जटिल परिदृश्य को लागू करने की आवश्यकता है, तो आप इस विधि का उपयोग कर सकते हैं।

टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं