2012-03-20 16 views

Respuesta

8

Para asegurarse de empezar con

[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy = 
    NSHTTPCookieAcceptPolicyAlways; 

Pero, como se ha mencionado por @JoelFan, el problema puede ser la cadena de agente de usuario causando ASP.NET para intentar y fallar en un inicio de sesión sin cookies. En lugar de una respuesta que incluya

Set-Cookie: .ASPXAUTH = realmente-hex-número de larga

devuelve una redirección a algo así como

Ubicación:/(F (long-sorta-base64ish-looking-string))/

La cadena de agente de usuario UIWebView predeterminada es algo así como

User-Agent: Mozilla/5.0 (iPad; OS CPU 7_0_2 como Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501

pero ASP.NET no le gusta esto. Safari envía algo como esto:

User-Agent: Mozilla/5.0 (iPad; CPU OS 7_0_2 como Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 móvil/11A501 Safari/9537,53

haga lo siguiente desde el principio, tal vez en su AppDelegate.m

// DON'T try to reuse a UIWebView for this. 
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectZero]; 
// This webview has already decided to use the default user agent string. 

// let's use javascript to get the existing user agent string 
NSString *userAgent = [wv stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; 

// let's tack on some stuff to make ASP.NET happy 
userAgent = [userAgent stringByAppendingString:@" Version/7.0 Safari/9537.53"]; 

[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": userAgent}]; 
// New UIWebViews inited after here will use the user agent string you made. 
Cuestiones relacionadas