2015-12-02 6 views
7

मुझे जेएक्स-आरएस एपीआई javax.ws.rs.core.Cookie और javax.ws.rs.core.NewCookie में दो कक्षाएं मिलीं। एक दूसरे के फायदे क्या हैं? मैं जानना चाहता हूं कि किसके लिए उपयोग करने की सिफारिश की जाती है और कब?javax.ws.rs.core.Cookie बनाम javax.ws.rs.core.NewCookie, क्या अंतर है?

अग्रिम धन्यवाद :)

उत्तर

12

में यह नहीं है के बारे में की सिफारिश की, इसके बारे में उचित है। एक अनुरोध के लिए है, और एक प्रतिक्रिया के लिए है। आप दो अलग javadocs देख सकते हैं।

Cookie

एक अनुरोध में स्थानांतरित कर एक HTTP कुकी का मान, का प्रतिनिधित्व करता है।

NewCookie

एक नया HTTP कुकी बनाने के लिए प्रयोग किया जाता है, एक प्रतिक्रिया में स्थानांतरित कर दिया।

NewCookie, जब Response में भेजा है, कुकी जानकारी के साथ एक Set-Cookieप्रतिक्रिया हैडर सेट हो जाएगा, और Cookie कुकी जानकारी के साथ Cookieअनुरोध हैडर सेट हो जाएगा। यह HTTP spec प्रति है।

उदाहरण उपयोग:

@GET 
public Response get() { 
    return Response.ok("blah").cookie(new NewCookie("foo", "bar")).build(); 
} 

[..] 

Client client = ClientBuilder.newClient(); 
Response response = client.target(url).request().cookie(new Cookie("foo", "bar")).get(); 

आम तौर पर ग्राहक के पक्ष, तो आप मैन्युअल Cookie नहीं बनाता के रूप में मैंने किया था। अधिकांश समय आप प्रारंभिक अनुरोध की प्रतिक्रिया से कुकीज़ प्राप्त करेंगे, फिर उन कुकीज को वापस भेजें। इसका मतलब है कि Response में, आपके पास NewCookie एस होगा और आपको अगले अनुरोध के लिए उन्हें Cookie एस में बदलना होगा। इसे आसानी से newCookie.toCookie()

Map<String, NewCookie> cookies = response.getCookies(); 
Invocation.Builder ib = target.request(); 
for (NewCookie cookie: cookies.values()) { 
    ib.cookie(cookie.toCookie()); 
} 
Response response = ib.get(); 
पर कॉल करके आसानी से पूरा किया जा सकता है
संबंधित मुद्दे