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

ByteArray() এর 3.4

আরেকটি সাধারণ দৃশ্য হল সার্ভারে বাইটের একটি সেট পাঠানো। উদাহরণস্বরূপ, আপনি কিছু বস্তুকে বাইটের সেট হিসেবে সিরিয়ালাইজ করেছেন, কিছু এনক্রিপ্ট করেছেন বা কিছু ডেটা বাফার পাঠাতে চান। এর জন্য একটি পদ্ধতি প্রয়োজন .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()

অবশেষে, শেষ কিন্তু অন্তত আকর্ষণীয় দৃশ্যকল্প একটি POST অনুরোধ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(). কিন্তু আপনি যদি অসিঙ্ক্রোনাসভাবে ডেটা পাঠাতে চান বা আপনাকে কিছু বিশেষ জটিল দৃশ্য বাস্তবায়ন করতে হয়, তাহলে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন।

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই