डिफ़ॉल्ट जर्सी क्लाइंट सर्वर को अनुरोध भेजने के लिए HttpURLConnection का उपयोग करता है। HttpUrlConnection
कुछ हेडर एक अनुरोध में भेजे जाने के लिए प्रतिबंधित करता है, देखें:
/*
* Restrict setting of request headers through the public api
* consistent with JavaScript XMLHttpRequest2 with a few
* exceptions. Disallowed headers are silently ignored for
* backwards compatibility reasons rather than throwing a
* SecurityException. For example, some applets set the
* Host header since old JREs did not implement HTTP 1.1.
* Additionally, any header starting with Sec- is
* disallowed.
*
* The following headers are allowed for historical reasons:
*
* Accept-Charset, Accept-Encoding, Cookie, Cookie2, Date,
* Referer, TE, User-Agent, headers beginning with Proxy-.
*
* The following headers are allowed in a limited form:
*
* Connection: close
*
* See http://www.w3.org/TR/XMLHttpRequest2.
*/
private static final boolean allowRestrictedHeaders;
private static final Set<String> restrictedHeaderSet;
private static final String[] restrictedHeaders = {
/* Restricted by XMLHttpRequest2 */
//"Accept-Charset",
//"Accept-Encoding",
"Access-Control-Request-Headers",
"Access-Control-Request-Method",
"Connection", /* close is allowed */
"Content-Length",
//"Cookie",
//"Cookie2",
"Content-Transfer-Encoding",
//"Date",
//"Expect",
"Host",
"Keep-Alive",
"Origin",
// "Referer",
// "TE",
"Trailer",
"Transfer-Encoding",
"Upgrade",
//"User-Agent",
"Via"
};
आपके पास दो विकल्प कैसे इस स्थिति से निपटने के लिए है:
डिफ़ॉल्ट जर्सी ग्राहक के साथ आप एक प्रणाली संपत्ति निर्धारित करने की आवश्यकता
-Dsun.net.http.allowRestrictedHeaders=true
जो अनुरोध से प्रतिबंधित शीर्षलेखों को हटाने को दबाता है।
ApacheHttpClient/ApacheHttpClient4 का उपयोग करें जो इस प्रतिबंध को प्रतीत नहीं होता है। सीधे शब्दों में अपनी परियोजना के लिए निम्न निर्भरता से एक जोड़ें:
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client</artifactId>
<version>1.15</version>
</dependency>
या
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client4</artifactId>
<version>1.15</version>
</dependency>
और उसके बाद अपने ग्राहक बनाने की तरह:
ApacheHttpClient.create(com.sun.jersey.api.client.config.ClientConfig);
या
ApacheHttpClient4.create(com.sun.jersey.api.client.config.ClientConfig);
स्रोत
2012-11-07 09:21:01
मैं इस पाने के लिए # 1 दृष्टिकोण से काम करने में सक्षम था। मैं वास्तव में # 2 पसंद करता था, लेकिन मुझे लगातार "java.lang.IllegalStateException: सिंगल क्लाइंट कॉनमैनेजर का अमान्य उपयोग: कनेक्शन अभी भी आवंटित" त्रुटियों में दिए गए निर्देशों का पालन करने के बावजूद: http://java.net/jira/browse/JERSEY- 730 – SkP