NSMutableURLRequestのCookieを介して認証文字列を送信しようとしています。 NSHTTPCookieを作成しようとしています
+(id)cookieWithProperties:(NSDictionary *)properties
しかし、認証用に持っている単純なキーと値のペア以外のプロパティを指定する方法を見つけることができませんでした。キーと値のペアのみを使用すると、nilが返されます。
これに関する例、ドキュメント、または考えをいただければ幸いです。
これは、Cookieにプロパティを設定する方法です。
NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
url, NSHTTPCookieOriginURL,
@"testCookies", NSHTTPCookieName,
@"1", NSHTTPCookieValue,
nil];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];
上記の例では、url
、testCookies
、および1
は値です。同様に、NSHTTPCookieOriginURL
、NSHTTPCookieName
、NSHTTPCookieValue
は、NSDictionary
オブジェクトのキーですキーと値のペアのように。
NSDictionary
を使用してプロパティを設定/取得し、NSHTTPCookie
に追加します。
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];
私はそれを機能させることができませんでした。
しかし、私はこれを機能させました:
NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];
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];
キーNSHTTPCookiePath
は、使用するときに辞書に存在する必要があります
[NSHTTPCookie cookieWithProperties:dictionary]
NSHTTPCookieDomain
またはNSHTTPCookieOriginURL
のどちらを使用するかを指定します。また、NSHTTPCookiePath
の値は@"/"
ではなく@"\\"
である必要があります。