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 of String()

இரண்டாவது பொதுவான விருப்பம், சில சரத்தை கோரிக்கை அமைப்பாக அனுப்புவதாகும். இது மிகவும் எளிமையாக செய்யப்படுகிறது:


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 of File()

இறுதியாக, நீங்கள் 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 of 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 இன் இன்புட் ஸ்ட்ரீம்()

இறுதியாக, ஒரு POST கோரிக்கையுடன்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(). ஆனால் நீங்கள் ஒத்திசைவற்ற முறையில் தரவை அனுப்ப விரும்பினால் அல்லது சில சிக்கலான சூழ்நிலையை நீங்கள் செயல்படுத்த வேண்டும் என்றால், நீங்கள் இந்த முறையைப் பயன்படுத்தலாம்.

கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION