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