Request Bodies और Headers
POST data भेजें और headers सेट करें
Request Bodies और Headers, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
अनुरोध body और headers
GET अनुरोधों को आम तौर पर body की आवश्यकता नहीं होती, लेकिन POST, PUT और PATCH को होती है। JDK एचटीटीपी क्लाइंट अनुरोध body उपलब्ध कराने के लिए BodyPublisher ऑब्जेक्ट और headers निर्धारित करने के लिए बिल्डर विधियों का उपयोग करता है।
इस पाठ में डेटा भेजने और Content-Type जैसे headers को नियंत्रित करने की चर्चा की गई है।
BodyPublishers.ofString
सबसे सरल पब्लिशर स्ट्रिंग body भेजता है। इसे अनुरोध बिल्डर की POST(...) विधि को दें।
जिन अनुरोधों में body नहीं होती, उनके लिए BodyPublishers.noBody() उपलब्ध है।
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"Ada\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/users"))
.POST(BodyPublishers.ofString(json))
.build();
System.out.println("Method: " + request.method());
}
}एकल header निर्धारित करना
एक header जोड़ने के लिए header(name, value) का उपयोग करें। जेसन भेजने के लिए आप लगभग हमेशा Content-Type निर्धारित करते हैं।
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
public class Main {
public static void main(String[] args) {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/users"))
.header("Content-Type", "application/json")
.POST(BodyPublishers.ofString("{}"))
.build();
System.out.println("Has Content-Type: " +
request.headers().firstValue("Content-Type").isPresent());
}
}एक साथ कई headers
headers(name1, value1, name2, value2, ...) एक ही कॉल में कई headers निर्धारित करता है। तर्कों की संख्या सम होनी चाहिए, अन्यथा यह IllegalArgumentException फेंकता है।
import java.net.URI;
import java.net.http.HttpRequest;
public class Main {
public static void main(String[] args) {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.headers(
"Accept", "application/json",
"Accept-Language", "en-US")
.GET()
.build();
System.out.println(request.headers().map().keySet());
}
}प्राधिकरण headers
बियरर टोकन Authorization header के माध्यम से भेजे जाते हैं। मान को एक स्ट्रिंग के रूप में बनाएँ; मूल टोकन का लॉग कभी न लिखें।
public class Main {
public static void main(String[] args) {
String token = "abc123";
String headerValue = "Bearer " + token;
System.out.println("Authorization: Bearer ***");
System.out.println("Length: " + headerValue.length());
}
}PUT और DELETE
बिल्डर में इनके लिए समर्पित विधियाँ हैं: PUT(publisher), DELETE() और किसी अन्य चीज़, जैसे PATCH, के लिए सामान्य method(name, publisher)।
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
public class Main {
public static void main(String[] args) {
HttpRequest patch = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/users/1"))
.method("PATCH", BodyPublishers.ofString("{\"active\":true}"))
.build();
System.out.println("Method: " + patch.method());
}
}फ़ॉर्म-एन्कोडेड body
application/x-www-form-urlencoded डेटा के लिए आप body स्ट्रिंग स्वयं बनाते हैं, हर मान को यूआरएल-एन्कोड करते हैं, फिर उसे स्ट्रिंग के रूप में भेजते हैं।
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String body = "name=" + URLEncoder.encode("Ada Lovelace", StandardCharsets.UTF_8)
+ "&role=" + URLEncoder.encode("engineer", StandardCharsets.UTF_8);
System.out.println(body);
}
}फ़ाइल body भेजना
BodyPublishers.ofFile(path) किसी फ़ाइल को पूरी तरह मेमोरी में लोड किए बिना अनुरोध body के रूप में स्ट्रीम करता है — अपलोड के लिए आदर्श।
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/upload"))
.header("Content-Type", "application/octet-stream")
.POST(BodyPublishers.ofFile(Path.of("data.bin")))
.build();
System.out.println("Upload request built");
}
}बाइट-सरणी वाली body
जब आपके पास बाइट्स पहले से मेमोरी में हों, तब BodyPublishers.ofByteArray(byte[]) उन्हें सीधे भेजता है। रनटाइम पर बनाए गए बाइनरी पेलोड के लिए यह उपयोगी है।
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
byte[] payload = "raw-bytes".getBytes(StandardCharsets.UTF_8);
// BodyPublishers.ofByteArray(payload) would wrap these bytes
System.out.println("Payload size: " + payload.length + " bytes");
}
}प्रतिबंधित headers
सुरक्षा के लिए क्लाइंट आपको Host, Content-Length, Connection और Upgrade जैसे कुछ headers निर्धारित करने से रोकता है। इन्हें निर्धारित करने का प्रयास IllegalArgumentException फेंकता है — क्लाइंट स्वयं इनका प्रबंधन करता है।
सब कुछ एक साथ
एक सामान्य जेसन POST में body पब्लिशर और content-type header दोनों शामिल होते हैं:
.POST(BodyPublishers.ofString(json)).header("Content-Type", "application/json")- यदि आवश्यक हो तो
.header("Authorization", "Bearer ...")add करें
त्वरित जाँच
अनुरोध body और headers की अपनी समझ का परीक्षण करें।
पुनरावलोकन
आपने डेटा भेजना और headers नियंत्रित करना सीखा:
- BodyPublishers.ofString / ofByteArray / ofFile अनुरोध body उपलब्ध कराते हैं।
- POST / PUT / DELETE / method(...) एचटीटीपी विधि चुनते हैं।
- header(...) और headers(...) अनुरोध headers निर्धारित करते हैं।
- जेसन और फ़ॉर्म डेटा के लिए
Content-Typeनिर्धारित करें; टोकन के लिएAuthorizationका उपयोग करें। - कुछ headers (होस्ट, कंटेंट-लेंथ) प्रतिबंधित होते हैं और क्लाइंट द्वारा प्रबंधित किए जाते हैं।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Request Bodies और Headers” पाठ निःशुल्क है?
हाँ—“Request Bodies और Headers” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Request Bodies और Headers” में मैं क्या सीखूँगा?
POST data भेजें और headers सेट करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“Request Bodies और Headers” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- java.net.http.HttpClient
- Asynchronous Requests
- Request Bodies और Headers
- Responses संभालना