登录在Safari中工作但不在UIWebView中工作

时间:2012-11-29 13:28:08

标签: iphone ios

我有一个简单的iOS应用程序,它只显示一个显示某个需要登录的网站的UIWebView。如果我运行我的应用程序并尝试登录该站点只需重新显示登录页面(没有错误消息)。如果我使用Safari,我可以登录同一个网站。我的UIWebView我可能做错了什么?如果重要,该网站使用SSL / https。

2 个答案:

答案 0 :(得分:7)

原来问题是:Asp.Net Forms Authentication when using iPhone UIWebView

(UIWebView发送一个奇怪的用户代理标头,ASP.NET无法识别,所以它认为它无法处理cookie。这显然已在ASP.NET 4.5中修复,甚至在早期版本中你可以修复它服务器,如果您有权访问ASP.NET站点)

答案在这里:Change User Agent in UIWebView (iPhone SDK)

链接到:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview

关键部分是将此代码放入您的应用启动代码中:

- (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSDictionary *dictionary = [NSDictionary 
        dictionaryWithObjectsAndKeys:
        @"Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", 
        @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
}

这会更改用户代理。有很多其他方法可以做到这一点,其中一些非常复杂(其中一种被称为“混合”),其中大多数都不起作用。

答案 1 :(得分:0)

在这种情况下,UIWebView需要实现正确的委托协议方法,以允许您与后端体系结构进行通信。请查看thisthisthis