CodeGym/Java Course/தொகுதி 3/புதிய HttpClient

புதிய HttpClient

கிடைக்கப்பெறுகிறது

1.1 HttpClient அறிமுகம்

JDK 11 இல் தொடங்கி, Java இயங்குதளத்தின் டெவலப்பர்கள் http கோரிக்கைகளை உருவாக்க JDK க்கு ஒரு சக்திவாய்ந்த புதிய கருவியைச் சேர்த்தனர் java.net.http. இது நான்கு முக்கிய வகுப்புகளைக் கொண்டுள்ளது:

  • HttpClient
  • HttpRequest
  • HttpResponse
  • வலை சாக்கெட்

இவை மிகவும் சக்திவாய்ந்த வகுப்புகளாகும், அவை HTTP, HTTP/2மற்றும் WebSocket.

கூடுதலாக, நீங்கள் ஒத்திசைவான மற்றும் ஒத்திசைவற்ற http கோரிக்கைகளை உருவாக்க இந்த வகுப்புகளைப் பயன்படுத்தலாம்.

ஒரு http கோரிக்கையை உருவாக்குவது பின்வரும் பகுதிகளைக் கொண்டுள்ளது:

  1. ஒரு பொருளை உருவாக்கவும்HttpClient
  2. ஒரு பொருளை உருவாக்கவும்HttpRequest
  3. send()அல்லது முறையைப் பயன்படுத்தி கோரிக்கையை அனுப்புதல்sendAsync()
  4. பதில் செயலாக்கம்HttpResponse

அத்தகைய கோரிக்கையின் எடுத்துக்காட்டு:

HttpClient client = HttpClient.newBuilder()
        .version(Version.HTTP_1_1)
        .followRedirects(Redirect.NORMAL)
        .connectTimeout(Duration.ofSeconds(20))
        .proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
        .authenticator(Authenticator.getDefault())
        .build();

HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());

1.2 அறிவிப்பு அணுகுமுறை

மேலே உள்ள எடுத்துக்காட்டில், குறியீட்டை எழுதுவதற்கான அறிவிப்பு அணுகுமுறையின் உதாரணத்தை நீங்கள் காண்கிறீர்கள். உதாரணத்தின் முதல் பகுதியைப் பார்ப்போம்:

HttpClient client = HttpClient.newBuilder()
.version(Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(20))
.proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
.authenticator(Authenticator.getDefault())
.build();

கிளாசிக் பாணியில் எழுதப்பட்ட இந்த குறியீடு எப்படி இருக்கும்:

HttpClient client = HttpClient.new();
client.setVersion(Version.HTTP_1_1);
client.setFollowRedirects(Redirect.NORMAL);
client.setConnectTimeout(Duration.ofSeconds(20));
client.setProxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)));
client.setAuthenticator(Authenticator.getDefault());

குறியீட்டில் அறிவிப்பு அணுகுமுறையைப் பயன்படுத்தும் போது, ​​இரண்டு விஷயங்கள் மாறுகின்றன. முதலாவதாக , அனைத்து வகுப்பு முறைகளும் HttpClient அவற்றின் சொந்த பொருளைத் திருப்பித் தருகின்றன , இது சங்கிலிகளின் வடிவத்தில் குறியீட்டை ஒழுங்கமைக்க உங்களை அனுமதிக்கிறது.

கிளாசிக் குறியீடு:
HttpClient client = HttpClient.new();
client.setVersion(Version.HTTP_1_1);
client.setFollowRedirects(Redirect.NORMAL);
client.setConnectTimeout(Duration.ofSeconds(20));
client.setAuthenticator(Authenticator.getDefault());
ஒரு சங்கிலியாக:
HttpClient client = HttpClient.new() .setVersion(Version.HTTP_1_1) .setFollowRedirects(Redirect.NORMAL). setConnectTimeout(Duration.ofSeconds(20)) .setAuthenticator(Authenticator.getDefault());
ஒவ்வொரு முறையையும் தனித்தனி வரிக்கு மாற்றுகிறோம் (இது ஒரு நீண்ட அறிக்கை)
HttpClient client = HttpClient.new()
.setVersion(Version.HTTP_1_1)
.setFollowRedirects(Redirect.NORMAL)
.setConnectTimeout(Duration.ofSeconds(20))
.setAuthenticator(Authenticator.getDefault());

இரண்டாவதாக , முன்னொட்டு முறைகளில் இருந்து நீக்கப்பட்டது set, இது குறியீட்டை இன்னும் சுருக்கமாக எழுத அனுமதிக்கிறது:

இருந்தது
HttpClient client = HttpClient.new()
.setVersion(Version.HTTP_1_1)
.setFollowRedirects(Redirect.NORMAL)
.setConnectTimeout(Duration.ofSeconds(20))
.setAuthenticator(Authenticator.getDefault());
அது ஆனது
HttpClient client = HttpClient.new()
.version(Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(20))
.authenticator(Authenticator.getDefault());

அத்தகைய குறியீடு எழுத கடினமாக இருந்தாலும், படிக்க எளிதானது.

மேலும் ஒரு முக்கியமான புள்ளி. இந்த எடுத்துக்காட்டில், பில்டர் முறை பயன்படுத்தப்பட்டது. ஒரு பொருளை உருவாக்குவது ஒரு சிக்கலான செயல்முறையாக இருக்கும் காட்சிகள் உள்ளன. எனவே, அவர்கள் அதை முறைப்படுத்த விரும்புகிறார்கள்: இது நிபந்தனை முறை அழைப்பில் தொடங்கி begin()நிபந்தனை முறை அழைப்பில் முடிவடைகிறது end().

நாங்கள் பகுப்பாய்வு செய்த எடுத்துக்காட்டில், முறை HttpClient.newBuilder()ஒரு பொருளை வழங்குகிறது HttpClient.Builder(இது வகுப்பின் உள் பயன்பாட்டு வகுப்பு HttpClient). வகையின் அனைத்து முறைகளும் version()இந்த சேவை பொருளில் மட்டுமே அழைக்கப்படுகின்றன. சரி, முறையின் அழைப்பு build()பொருளின் கட்டுமானத்தின் முடிவைக் குறிக்கிறது மற்றும் பொருளைத் திருப்பித் தருகிறது HttpClient.

கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை