2013-09-22 9 views
5

मैं spray-client और spray-httpx उपयोग करने का प्रयास कर रहा हूँ और मैं मुसीबत पता लगाना कैसे HttpResponse से 'सेट-कुकी' हेडर कन्वर्ट करने के लिए एक 'कुकी' शीर्ष लेख है कि मैं एक HttpRequestस्प्रे में 'कुकी' हेडर का अनुरोध करने के लिए प्रतिक्रिया 'सेट-कुकी' शीर्षलेख से कैसे परिवर्तित करें?

val responseSetCookieHeaders = response.headers filter { _.name == "Set-Cookie" } 
... 
val requestCookieHeader:HttpHeader = ??? 
... 
addHeader(requestCookieHeader) ~> sendReceive ~> { response => ??? } 
पर निर्धारित करना चाहते हैं के लिए हो रही है

मैं spray.http.HttpHeaders.Cookie देख पा रहे हैं, लेकिन मैं HttpHeader का एक उदाहरण से HttpCookie कन्वर्ट करने के लिए कोई रास्ता नहीं देख ...

उत्तर

10

HttpHeaders.Cookie एक unapply विधि के साथ एक मामले वर्ग है। तो तुम एक साधारण समारोह के साथ प्रतिक्रिया से यह निकाल सकते हैं:

def getCookie(name: String): HttpHeader => Option[HttpCookie] = { 
    case Cookie(cookies) => cookies.find(_.name == name) 
} 

में थोड़ा और अधिक सामान्य बात है कि है, लेकिन मुझे लगता है कि समाधान स्पष्ट है।

मैं निम्नलिखित तरीके से इस करना होगा: वैल responseSetCookieHeader:

// some example response with cookie 
val httpResponse = HttpResponse(headers = List(`Set-Cookie`(HttpCookie("a", "b")))) 

// extracting HttpCookie 
val httpCookie: List[HttpCookie] = httpResponse.headers.collect { case `Set-Cookie`(hc) => hc } 

// adding to client pipeline 
val pipeline = addHeader(Cookie(httpCookie)) ~> sendReceive 
+0

क्या मैं मिलान देख सकते हैं से 'सेट Cookie' पर किया जाना चाहिए HttpHeader = ???; प्रतिक्रियासेटकुकी हैडर मैच {केस HttpHeader.'Set-कुकी '(सी) => println (c.content)}। मुझे सही रास्ते पर रखने के लिए धन्यवाद! – Andrey

+0

मूल रूप से, मैं कर रहा हूं: प्रतिक्रियाSetCookieHeaders मानचित्र {केस HttpHeaders.'Set-कुकी '(सी) => एस "$ {c.name} = $ {c.content}"} mkString ";" अगर आप अपना अपडेट करते हैं "कुकी" के बजाय "सेट-कुकी" पर मिलान करने के साथ जवाब मैं इसे स्वीकार करूंगा – Andrey

+0

@Andrey मैंने अपना जवाब अपडेट कर लिया है, क्या यह आपके लिए उपयुक्त होगा? – 4lex1v

संबंधित मुद्दे

 संबंधित मुद्दे