क्या कोई मुझे बताएगा कि वास्तव में क्या है HTTP इकाई है?
मैं HTTPClient डॉक्यूमेंटेशन पढ़ रहा हूं, लेकिन मुझे वास्तव में समझ में नहीं आया कि इसका क्या मतलब है?
क्या कोई मुझे बताएगा कि वास्तव में क्या है HTTP इकाई है?
मैं HTTPClient डॉक्यूमेंटेशन पढ़ रहा हूं, लेकिन मुझे वास्तव में समझ में नहीं आया कि इसका क्या मतलब है?
जवाबों:
एक HTTP इकाई एक HTTP अनुरोध या प्रतिक्रिया का बहुमत है, जिसमें कुछ हेडर और बॉडी शामिल हैं, यदि मौजूद है। यह अनुरोध या स्थिति रेखा के बिना संपूर्ण अनुरोध या प्रतिक्रिया प्रतीत होता है (हालांकि केवल कुछ हेडर फ़ील्ड को इकाई का हिस्सा माना जाता है )।
चित्रित करना; यहाँ एक अनुरोध है:
POST /foo HTTP/1.1 # Not part of the entity.
Content-Type: text/plain # ┬ The entity is from this line down...
Content-Length: 1234 # │
# │
Hello, World! ... # ┘
और एक प्रतिक्रिया:
HTTP/1.1 200 OK # Not part of the entity.
Content-Length: 438 # ┬ The entity is from this line down...
Content-Type: text/plain # │
# │
Response body ... # ┘
&
इसके बजाय उपयोग कर रही थी &
। एक इकाई भी नहीं है? क्या फर्क पड़ता है?
&
एक एचटीएमएल चरित्र इकाई संदर्भ है , न कि एक HTTP एंटिटी ।
यहाँ 3 सरल मामले हैं:
केस 1. आप एक अनुरोध में 3 फाइलें अपलोड कर रहे हैं। वे 3 फाइलें 3 इकाइयां हैं। उनमें से प्रत्येक के पास यह Content-Type
इंगित करने के लिए कि यह किस प्रकार की फ़ाइल है।
केस 2. आप एक वेब पेज देख रहे हैं। ब्राउज़र ने पृष्ठभूमि में एक HTML फ़ाइल को इकाई के रूप में डाउनलोड किया है। चूंकि पेज को लगातार अपडेट किया जा सकता है, इसलिए आपको बाद में पूरी तरह से अलग इकाई मिल सकती है।
केस 3. आपको मिल गया है 304 Not Modified
। किसी भी इकाई को स्थानांतरित नहीं किया गया है।
एक शब्द में, Entity एक HTTP संदेश (या तो अनुरोध या प्रतिक्रिया) के अंदर एक वैकल्पिक पेलोड है , इसलिए यह Entity और संदेश के बीच एक " अंश-पूर्ण " संबंध है।
कुछ शीर्ष लेख फ़ील्ड पर लागू होते हैं Message
चाहते Transfer-Encoding
का वर्णन बिचौलियों के बीच संदेश स्थानांतरित करने का तरीका, और इस तरह जोड़ा या हटाया जा सकता है (अनुरोध / प्रतिक्रिया श्रृंखला के साथ किसी भी आवेदन से hop-by-hop headers
)। तुलना में, उन हेडर फ़ील्ड Entity
कुछ गुणों पर लागू होते हैं, जो इकाई के आकार, प्रकार, संपीड़न एल्गोरिदम, आदि का वर्णन करते हैं ...
आगे पढ़ने, आरएफसी 2616 खंड 1.4, 4.5 और 4.3 से उद्धृत:
request chain --------------------------------------> UA -----v----- A -----v----- B -----v----- C -----v----- O <------------------------------------- response chain
ऊपर दिया गया आंकड़ा उपयोगकर्ता एजेंट और मूल सर्वर के बीच तीन बिचौलियों (ए, बी और सी) को दर्शाता है। एक अनुरोध या प्रतिक्रिया संदेश जो पूरी श्रृंखला की यात्रा करता है, चार अलग-अलग कनेक्शनों से होकर गुजरेगा।
कुछ हेडर फ़ील्ड हैं, जिनमें अनुरोध और प्रतिक्रिया संदेश दोनों के लिए सामान्य प्रयोज्यता होती है, लेकिन जो ट्रांसफर की जा रही इकाई पर लागू नहीं होती हैं । ये हेडर फ़ील्ड केवल प्रेषित होने वाले संदेश पर लागू होते हैं ।
ट्रांसफर-एनकोडिंग एमयूएस का उपयोग संदेश के सुरक्षित और उचित हस्तांतरण को सुनिश्चित करने के लिए एक आवेदन द्वारा लागू किसी भी हस्तांतरण-कोडिंग को इंगित करने के लिए किया जाना चाहिए। ट्रांसफर-एनकोडिंग संदेश की एक संपत्ति है, इकाई की नहीं, और इस प्रकार अनुरोध या प्रतिक्रिया श्रृंखला के साथ किसी भी आवेदन द्वारा जोड़ा या हटाया जा सकता है।
message-body = Transfer-Encoding( Content-Encoding(entity-body) )
जहां Transfer-Encoding
"chunked" हो सकता है जिसका अर्थ है कि संदेश को कैसे स्थानांतरित किया जाए, और Content-Encoding
"gzip" हो सकता है जो इकाई को संपीड़ित करने के तरीके के लिए खड़ा है।
HTTP एक प्रोटोकॉल है जो किसी नेटवर्क के माध्यम से रिमोट मशीन से जानकारी एक्सेस करते समय देखा जाता है। आमतौर पर नेटवर्क इंटरनेट है और रिमोट मशीन एक सर्वर है।
जब आप व्यक्ति A से व्यक्ति B की जानकारी मांगते हैं, तो आप उसे एक संदेश देते हैं। (निवेदन)। व्यक्ति बी आपको जवाब देता है (प्रतिक्रिया)। अनुरोध और प्रतिक्रिया HTTP संदेश प्रकार हैं।
व्यक्ति ए, व्यक्ति से सूचना मांगने के बजाय कुछ करने के लिए कह सकता है। कहते हैं, व्यक्ति ए चाहता है कि व्यक्ति बी एक सुरक्षित स्थान पर एक फ़ाइल संग्रहीत करे। तो, व्यक्ति A उस फ़ाइल (HTTP इकाई) को व्यक्ति B को पास करता है और उसे कुछ करने के लिए कहता है (HTTP संदेश)। इस मामले में, व्यक्ति एक "इकाई" पारित कर रहा है। HTTP इकाई के संदर्भ में, यह संदेश के साथ संलग्न एक पेलोड है।
आशा है कि सादृश्य ने मदद की।
जैसा कि @ hawkeye-parker द्वारा एक टिप्पणी में कहा गया है, ऐसा लगता है कि Entity को हटा दिया गया है। इस 2014 rfc में एक खोज करें , और आप एक्सएमएल संस्थाओं और संदेश निकाय के बारे में देखेंगे, लेकिन एचटीटीपी इकाई के बारे में कुछ भी नहीं।
फिर भी, HttpClient, लेकिन यह भी JaxRS ग्राहक, एक setEntity()
औरgetEntity()
विधि है।
स्वीकृत उत्तर को देखते हुए, दोनों पुस्तकालय गलत हैं! HttpClient.setEntity()
पहले से सेट हेडर नहीं हटाए जाएंगे।
HttpEntity
वह वह है जो आप रिक्वेस्ट में (हेडर के साथ) पास करने जा रहे हैं और आपको रिस्पांस में क्या मिल रहा है। गेट रिक्वेस्ट के लिए हम साधारण स्ट्रिंग पास कर रहे हैं
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>(headers);
पोस्ट के लिए हम पूरा एंटिटी क्लास पास करने जा रहे हैं
public String createProducts(@RequestBody Product product) {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);
return restTemplate.exchange(
"http://localhost:8080/products", HttpMethod.POST, entity, String.class
).getBody();
}
एंटिटी एक संदेश जैसा कुछ होता है, इसमें हेडर होते हैं, जहां मेटाडेटा जैसे स्थान, लैंग, एन्कोडिंग होते हैं ...
और वैकल्पिक रूप से एक निकाय - यह सामग्री आदि के रूप में हैडर में निर्दिष्ट है
हमारे पास जो अच्छे उत्तर हैं, उनमें से मेरा मानना है कि आरएफसी 2616 (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल - एचटीटीपी / 1.1) से सीधे आने वाली किसी चीज़ का उल्लेख करने लायक है :
सत्ता
अनुरोध और प्रतिक्रिया संदेश MAY एक इकाई को स्थानांतरित करते हैं यदि अन्यथा अनुरोध विधि या प्रतिक्रिया स्थिति कोड द्वारा प्रतिबंधित नहीं है। एक इकाई में इकाई-हेडर फ़ील्ड और एक निकाय निकाय होते हैं , हालांकि कुछ प्रतिक्रियाओं में केवल इकाई-हेडर शामिल होंगे।
एक संक्षेप में: एक इकाई को स्थानांतरित किया जा सकता है, और यह हेडर + बॉडी , या सिर्फ हेडर हो सकता है ।
चूँकि वहाँ ऊपर लिंक है, मैं अतिरिक्त टिप्पणी करने पर खुद को रोक लेता हूँ।