web-dev-qa-db-ja.com

NSURLRequestのCookieを作成しますか?

NSMutableURLRequestのCookieを介して認証文字列を送信しようとしています。 NSHTTPCookieを作成しようとしています

 +(id)cookieWithProperties:(NSDictionary *)properties

しかし、認証用に持っている単純なキーと値のペア以外のプロパティを指定する方法を見つけることができませんでした。キーと値のペアのみを使用すると、nilが返されます。

これに関する例、ドキュメント、または考えをいただければ幸いです。

23
Michael Grinich

これは、Cookieにプロパティを設定する方法です。

 NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                              url, NSHTTPCookieOriginURL,
                              @"testCookies", NSHTTPCookieName,
                              @"1", NSHTTPCookieValue,
                              nil];
  NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

上記の例では、urltestCookies、および1です。同様に、NSHTTPCookieOriginURLNSHTTPCookieNameNSHTTPCookieValueは、NSDictionaryオブジェクトのキーですキーと値のペアのように

NSDictionaryを使用してプロパティを設定/取得し、NSHTTPCookieに追加します。

19
Jordan

2.2.1 iphoneで、ドキュメントに「オプション」と表示されていても、NSHTTPCookiePathが指定されていない場合、Cookieが作成されないことに気付きました。

私もです:

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"domain.com", NSHTTPCookieDomain,
                            @"/", NSHTTPCookiePath,  // IMPORTANT!
                            @"testCookies", NSHTTPCookieName,
                            @"1", NSHTTPCookieValue,
                            nil];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

NSArray* cookies = [NSArray arrayWithObjects: cookie, nil];

NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];

[request setAllHTTPHeaderFields:headers];
38
jm.

私はそれを機能させることができませんでした。

しかし、私はこれを機能させました:

NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];
7
Chris Hinkle

Jmの例で1つの間違いを見つけました。NSHTTPCookiePathは@"/"である必要がありますが、@"\\\\"ではありません。

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"domain.com", NSHTTPCookieDomain,
                            @"/", NSHTTPCookiePath,  // IMPORTANT!
                            @"testCookies", NSHTTPCookieName,
                            @"1", NSHTTPCookieValue,
                            nil];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

NSArray* cookies = [NSArray arrayWithObjects: cookie, nil];

NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];

[request setAllHTTPHeaderFields:headers];
6
Serhiy

キーNSHTTPCookiePathは、使用するときに辞書に存在する必要があります

[NSHTTPCookie cookieWithProperties:dictionary]

NSHTTPCookieDomainまたはNSHTTPCookieOriginURLのどちらを使用するかを指定します。また、NSHTTPCookiePathの値は@"/"ではなく@"\\"である必要があります。

0
Dexter Xiong