{"id":4028,"date":"2019-10-29T23:05:14","date_gmt":"2019-10-29T14:05:14","guid":{"rendered":"http:\/\/redwing.moo.jp\/cocoa\/?p=4028"},"modified":"2019-10-29T23:07:07","modified_gmt":"2019-10-29T14:07:07","slug":"afnetworking%e3%81%ae%e3%83%aa%e3%82%af%e3%82%a8%e3%82%b9%e3%83%88%e3%81%a7cookie%e3%82%92%e6%89%b1%e3%81%86%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/redwing.moo.jp\/cocoa\/archives\/4028","title":{"rendered":"AFNetworking\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067Cookie\u3092\u6271\u3046\u65b9\u6cd5"},"content":{"rendered":"<p>\u5148\u6708\u306fSwift\u3092\u3084\u3063\u3066\u3044\u307e\u3057\u305f\u304c\uff0c\u4eca\u6708\u306fObjective-C\u3067\u3059\uff0e<br \/>\n\u6570\u5e74\u3076\u308a\u306b\u4ed6\u4eba\u304c\u66f8\u3044\u305fObjective-C\u3067AFNetworking\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u305f\u901a\u4fe1\u51e6\u7406\u3092\u8aad\u3093\u3067\u3044\u3066\uff0cCookie\u3092\u6271\u3046\u51e6\u7406\u304c\u308f\u304b\u3089\u305a\u56f0\u3063\u305f\u306e\u3067\u30e1\u30e2\u3057\u3066\u304a\u304d\u307e\u3059\uff0e<\/p>\n<h2>\u25bc AFNetwork \u3067\u30ea\u30af\u30a8\u30b9\u30c8\u306bCookie\u3092\u8a2d\u5b9a\u3059\u308b<\/h2>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8 \u30d8\u30c3\u30c0\u306b\u30af\u30c3\u30ad\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u3057\u307e\u3059\uff0e<\/p>\n<pre lang=\"objc\">\r\nNSString *cookie = [NSString stringWithFormat: @\"(Cookie\u306e\u30ad\u30fc\u540d)=%@; path=\/; HttpOnly\", (\u8a2d\u5b9a\u3059\u308b\u5024)];\u00a0 \u00a0 \r\n[manager.requestSerializer setValue: cookie forHTTPHeaderField: @\"Cookie\"];\u00a0 \u00a0 \u00a0 \u00a0\u00a0\r\n<\/pre>\n<h2>\u25bc \u30ea\u30af\u30a8\u30b9\u30c8 \u30d8\u30c3\u30c0\u3092\u53c2\u7167\u3059\u308b<\/h2>\n<p>\u6b63\u3057\u304f\u30ea\u30af\u30a8\u30b9\u30c8 \u30d8\u30c3\u30c0\u306b\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u306f\uff0c\u30c7\u30d0\u30c3\u30b0\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u53c2\u7167\u3067\u304d\u307e\u3059\uff0e<\/p>\n<pre lang=\"objc\">\r\n(lldb) po manager.requestSerializer.HTTPRequestHeaders\r\n<\/pre>\n<h2>\u25bc \u30ec\u30b9\u30dd\u30f3\u30b9 \u30d8\u30c3\u30c0\u3092\u53c2\u7167\u3059\u308b<\/h2>\n<p>\u30ec\u30b9\u30dd\u30f3\u30b9 \u30d8\u30c3\u30c0\u3092\u53c2\u7167\u3059\u308b\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d7\u4fe1\u6642\u306b\u53c2\u7167\u3067\u304d\u307e\u3059\uff0e<\/p>\n<pre lang=\"objc\">\r\n\u30b3\u30fc\u30c9\u7701\u7565\r\n\t:\r\nsuccess:^(NSURLSessionTask *operation, id responseObject){\u00a0 \u00a0 \r\nNSHTTPURLResponse *response = (NSHTTPURLResponse *)[operation response];\u00a0 \u00a0\u00a0\r\n\r\n(lldb) po response.allHeaderFields\r\n<\/pre>\n<h2>\u25bc \u30ec\u30b9\u30dd\u30f3\u30b9 \u30d8\u30c3\u30c0\u3067\u53c2\u7167\u3067\u304d\u306a\u304b\u3063\u305fCookie\u3092Cookie\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u53c2\u7167\u3059\u308b<\/h2>\n<p>\u4eca\u56de\u5c11\u3057\u56f0\u3063\u305f\u3053\u3068\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u3082\u30ec\u30b9\u30dd\u30f3\u30b9 \u30d8\u30c3\u30c0\u3067\u53c2\u7167\u3067\u304d\u308b\u30af\u30c3\u30ad\u30fc\u304c\u53c2\u7167\u3067\u304d\u306a\u304b\u3063\u305f\u306e\u3067\u3001\u8a18\u4e8b\u3092\u53c2\u8003\u306b<strong>Cookie\u30b9\u30c8\u30ec\u30fc\u30b8\u304b\u3089\u53c2\u7167\u3059\u308b\u3053\u3068\u3067\u5bfe\u51e6<\/strong>\u3057\u307e\u3057\u305f\uff0e<\/p>\n<pre lang=\"objc\">\r\nNSString *cookie = httpUrlResponse.allHeaderFields[@\"Set-Cookie\"];\r\n<\/pre>\n<p>\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306b\u53c2\u8003\u306b\u306a\u308b\u8a18\u4e8b\u304c\u3042\u308a\u307e\u3057\u305f\u306e\u3067\uff0c\u30e1\u30e2\u3057\u3066\u304a\u304d\u307e\u3059\uff0e<\/p>\n<p>\uff08\u53c2\u8003\uff09<a href=\"https:\/\/stackoverflow.com\/questions\/18555848\/how-to-use-afnetworking-to-save-cookies-permanently-forever-until-the-app-is-de\" rel=\"noopener noreferrer\" target=\"_blank\">How to use AFNetworking to save cookies permanently forever, until the app is deleted from the iPhone?<\/a><\/p>\n<p>\u4ee5\u4e0b\uff0c\u53c2\u8003\u306b\u306a\u308b\u3068\u601d\u308f\u308c\u308b\u90e8\u5206\u3092\u629c\u7c8b\u3067\u3059\uff0e<\/p>\n<pre>\r\n1) Upon successful authentication, the webservice hands me two cookies. \r\nHow do I access them? Do I go straight to NSHTTPCookie storage and grab the cookie by its name, or is there an AFNetworking \"way\" to do this?\r\n\r\nAFNetworking doesn't do anything explicitly with cookies so there is no \"AFNetworking way\" of dealing with cookies. \r\nYou'll work with NSHTTPCookie and NSHTTPCookieStorage.\r\n\r\n\u3010Google\u7ffb\u8a33\u3011\r\n1\uff09\u8a8d\u8a3c\u306b\u6210\u529f\u3059\u308b\u3068\u3001Web\u30b5\u30fc\u30d3\u30b9\u306f2\u3064\u306eCookie\u3092\u6e21\u3057\u307e\u3059\u3002\u305d\u308c\u3089\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f\u00a0\r\nNSHTTPCookie\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u76f4\u63a5\u79fb\u52d5\u3057\u3066\u3001\u540d\u524d\u3067Cookie\u3092\u53d6\u5f97\u3057\u307e\u3059\u304b\u3001\u305d\u308c\u3068\u3082AFNetworking\u306e\u300c\u65b9\u6cd5\u300d\u304c\u3042\u308a\u307e\u3059\u304b\uff1f\r\n\r\nAFNetworking\u306fCookie\u3092\u660e\u793a\u7684\u306b\u51e6\u7406\u3057\u306a\u3044\u305f\u3081\u3001Cookie\u3092\u51e6\u7406\u3059\u308b\u300cAFNetworking\u306e\u65b9\u6cd5\u300d\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u00a0\r\nNSHTTPCookie\u3068NSHTTPCookieStorage\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\r\n<\/pre>\n<p>NSURLSession\u3067Cookie\u3092\u6271\u3046\u30b5\u30f3\u30d7\u30eb\u306f\u4ee5\u4e0b\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\uff0e<br \/>\n\uff08\u53c2\u8003\uff09<a href=\"https:\/\/qiita.com\/drobune\/items\/388a1dfaa2df8de52971\" rel=\"noopener noreferrer\" target=\"_blank\">iOS7:NSURLSession\u306ehttp\uff08cookie)\u3067\u30cf\u30de\u3063\u305f<\/a><\/p>\n<p>Objective-C\u3067\u66f8\u304b\u308c\u305f\u901a\u4fe1\u51e6\u7406\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u63a2\u3057\u3066\u3044\u3066\u56f0\u3063\u305f\u306e\u306f\uff0c\u4ee5\u4e0b\u306e\u30af\u30e9\u30b9\u306e\u95a2\u4fc2\u3067\u3059\uff0e<br \/>\n\u305d\u308c\u305e\u308c\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u3067\u6539\u5909\u3055\u308c\u305f\u30af\u30e9\u30b9\u3067\u3042\u308b\u3068\u7406\u89e3\u3057\u3066\u60c5\u5831\u3092\u53c2\u7167\u3057\u305f\u65b9\u304c\u7406\u89e3\u3057\u3084\u3059\u3044\u3068\u601d\u3044\u307e\u3059\uff0e<\/p>\n<pre>\r\nAFHTTPOperationManager \u2192 <strong>AFHTTPSessionManager<\/strong>\r\nNSURLSession \u2192 <strong>NSURLConnection<\/strong>\r\n<\/pre>\n<a href=\"https:\/\/twitter.com\/redwing1300?ref_src=twsrc%5Etfw\" class=\"twitter-follow-button\" data-size=\"large\" data-show-count=\"false\">Follow @redwing1300<\/a><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><div id=\"redwi-189153845\" class=\"redwi- redwi-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-9652476346722993\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-9652476346722993\" \ndata-ad-slot=\"\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u5148\u6708\u306fSwift\u3092\u3084\u3063\u3066\u3044\u307e\u3057\u305f\u304c\uff0c\u4eca\u6708\u306fObjective-C\u3067\u3059\uff0e \u6570\u5e74\u3076\u308a\u306b\u4ed6\u4eba\u304c\u66f8\u3044\u305fObjective-C\u3067AFNetworking\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u305f\u901a\u4fe1\u51e6\u7406\u3092\u8aad\u3093\u3067\u3044\u3066\uff0cCookie\u3092\u6271\u3046\u51e6\u7406\u304c\u308f\u304b\u3089\u305a\u56f0\u3063 &hellip; <a href=\"https:\/\/redwing.moo.jp\/cocoa\/archives\/4028\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,117],"tags":[283],"class_list":["post-4028","post","type-post","status-publish","format-standard","hentry","category-ios","category-objective-c","tag-afnetworking"],"_links":{"self":[{"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/posts\/4028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/comments?post=4028"}],"version-history":[{"count":15,"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/posts\/4028\/revisions"}],"predecessor-version":[{"id":4043,"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/posts\/4028\/revisions\/4043"}],"wp:attachment":[{"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/media?parent=4028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/categories?post=4028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redwing.moo.jp\/cocoa\/wp-json\/wp\/v2\/tags?post=4028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}