1

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

4

2 回答 2

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/easy-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];
}

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

于 2012-12-26T02:35:54.337 回答
0

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

于 2012-11-29T13:57:38.447 回答