3

まず、アプリはUIWebViewを開いて私のWebサイトのログインページにアクセスします。ログインに成功すると、Webビューは閉じられます。非常に小さなjsonデータを返すURLをリクエストする必要があります。このURLをWebビューで起動すると、正しいデータが返されるため、ログインセッションがまだ有効であると想定されます(有効でない場合は、ログインページに再度リダイレクトされます)。

Webビューの代わりに、別のビューで返されるデータが必要なので、代わりにNSURLRequestを使用してデータにアクセスする必要があります。夕方にstackoverflowをクロールした後、次のようになります。

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:
                          [cookieJar cookies]];
[request setAllHTTPHeaderFields:headers];

NSError * e;
NSData  *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&e];

予期されたjsonデータの代わりにログインページソースで構成される返されたデータを調べると、Cookieが送信されなかったと結論付けることができます。アドバイスが必要です。

編集:[request allHTTPHeaderField]の出力を実行したところ、NSHTTPCookieStorage内の使用可能なすべてのCookieがリクエストに添付されていることが示されました。だから...私がどのように進めるべきか本当に迷っています。

4

1 に答える 1

1

Cookieを明示的に設定する必要はありません。NSURLConnectionはこれを自動的に行います。

Webビューが閉じた後にCookieを印刷してみましたか?

  [[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    NSLog(@"%@", obj);
  }];
于 2012-12-03T13:30:53.660 に答える