如何使用Restkit -objective-c保存和使用cookiea

时间:2013-06-26 13:35:14

标签: objective-c session cookies restkit

我正在使用Rails服务器,我有一个使用Restkit的应用程序来访问服务器。

我的服务器使用会话cookie登录。当我使用我的帐户信息发布/会话时,我登录并且我可以从服务器访问私有区域。 问题是,每当我想使用该应用程序时,我都不想登录。我不知道restkit如何使用cookie,但是当我的会话“开放”时,我不需要担心它。但现在我想使用我的cookie访问私人区域。

当我登录时:

'POST /sessions HTTP/1.1
 Host: localhost:3000
 Accept-Encoding: gzip, deflate
 Content-Type: application/json
 Content-Length: 74
 Accept-Language: en-us
 Accept: application/json
 Connection: keep-alive
 User-Agent: TicketIn/1.0 CFNetwork/609.1.4 Darwin/11.4.2

 {"session":{"email":"***","password":"***"}}'

 HTTP/1.1 200 OK 
 Content-Type: application/json; charset=utf-8
 X-Ua-Compatible: IE=Edge
 Etag: "7215ee9c7d9dc229d2921a40e899ec5f"
 Cache-Control: max-age=0, private, must-revalidate
 X-Request-Id: 41f0c482720d6cdcedb64071a6ebf9e7
 X-Runtime: 0.222790
 Server: WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
 Date: Wed, 26 Jun 2013 13:23:28 GMT
 Content-Length: 1
 Connection: Keep-Alive
 Set-Cookie: _vitrine_session=*session*; path=/; HttpOnly

当我尝试访问私人区域时:

 GET /ingressos HTTP/1.1
 Host: localhost:3000
 If-None-Match: "310fd8ebf912d0633caa05a91ce56fcc"
 Accept-Encoding: gzip, deflate
 Accept: application/json
 Cookie:      
 _vitrine_session=*session*
 Content-Length: 0
 Accept-Language: en-us
 Connection: keep-alive
 User-Agent: TicketIn/1.0 CFNetwork/609.1.4 Darwin/11.4.2

但是当我首先尝试访问私有区域时没有登录:

 GET /ingressos HTTP/1.1
 Host: localhost:3000
 Accept-Encoding: gzip, deflate
 Accept: application/json
 Content-Length: 0
 Connection: keep-alive
 Accept-Language: en-us
 User-Agent: TicketIn/1.0 CFNetwork/609.1.4 Darwin/11.4.2

那么如何在我的http请求中包含cookie?

谢谢!

1 个答案:

答案 0 :(得分:1)

RestKit构建于标准URL加载系统之上。因此,您可以通过设置NSHTTPCookieStorage的内容(如果您想挖掘,更改setHTTPShouldHandleCookies上的NSMutableURLRequest属性)完全控制使用的Cookie。

因此,您可以根据需要在NSHTTPCookieStorage添加和删除Cookie。