2012-01-19 24 views
5

私はUIWebViewを持っています。このウェブサイトにはユーザー認証があります。サイトは、認証Cookieを作成します。ブラウザでは、クッキーをクリアしない限り、常にログインします.xCODEがロードされると、クッキージャーを見るときにクッキーが表示されますが、WebViewには送信されません。 私はauth cookieがそこにあることをwebViewに知らせる方法を知りたいので、毎回認証のためにユーザにプロンプ​​トを表示し続けることはありません。iOS UIwebView認証Cookie

答えて

7

NSURLConnectionクラスを使用して、Webサイトにログインし、Cookieを取得するためのHTTP要求を実行できます。リクエストを実行するには、NSURLConnectionのインスタンスを作成し、それにデリゲートオブジェクトを割り当てます。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; 

次に、デリゲートメソッドを実装します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response; 
    NSDictionary *fields = [HTTPResponse allHeaderFields]; 
    NSString *cookie = [fields valueForKey:"Set-Cookie"]; // It is your cookie 
} 

クッキー文字列を保持またはコピーします。別のリクエストを実行する場合は、それをNSURLRequestインスタンスのHTTPヘッダーに追加します。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
[request addValue:cookie forHTTPHeaderField:"Cookie"]; 

あなたは、このメソッドを呼び出すことができますクッキーいつでも削除するには:

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) { 
     [cookieStorage deleteCookie:each]; 
    } 
+0

の.NET aspxauthクッキーを取得するには、[OK]、私はXcodeのに新たなんだと私はこのことについて質問があります。あまりにもシンプルであれば、私の名前を呼んでも構いません。 AppDelegate.mファイルでは、NSURLとNSURLConnectionを宣言しようとしていて、それらの定数ではないコンパイラエラーが発生しました。私はAppDelagate.mでデリゲートを実装してコンパイルしました。 NSMutable私はどのような方法が必要なのか分からない。私はこれが簡単な質問だと確信していますが、私は本当に分かりません。 – Hector

2

を私は問題を解決しました。この問題は、UIWebViewが標準のWebブラウザと見なされていないため、設定と関係しています。私は.netとIISを通してユーザーを認証しています。私は私のウェブサイトのApp_Browserディレクトリにgeneric.browserファイルを追加しました。ファイルの内容は次のとおりです。

<browsers> 
    <browser refID="Mozilla" > 
    <capabilities> 
     <capability name="cookies" value="true" /> 
    </capabilities> 
    </browser> 
    <browser refID="Default"> 
     <capabilities> 
     <capability name="cookies" value="true" /> 
     </capabilities> 
    </browser> 
</browsers> 

問題を修正する行はクッキーを許可機能です。

私が使用したソリューションへの参照は、あなたが共有Cookieの保存を使用して、すべてのWebサイトから認証Cookieを読み取ることができ、この

Asp.Net Forms Authentication when using iPhone UIWebView

4

ました。

NSHTTPCookie *cookie; 

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [cookieJar cookies]) 
{ 
    NSLog(@"%@", cookie); 
} 

やサイト

NSArray *cookiesForURL = [cookieJar cookiesForURL: [NSURL URLWithString: **MYURL**]]; 

for (cookie in cookiesForURL) 
{ 
    if([cookie.name compare:@".ASPXAUTH"] == NSOrderedSame) 
    { 
     NSLog(@"%@", cookie); 
     break; 
    } 
} 
関連する問題