2012-11-29 58 views
1

我有一個簡單的iOS應用程序,只顯示一個UIWebView顯示某個網站,需要登錄。如果我運行我的應用程序並嘗試登錄該網站,只需重新顯示登錄頁面(沒有錯誤消息)。如果我使用Safari,我可以很好地登錄到同一個網站。在我的UIWebView中,我可能會做錯什麼?萬一它很重要,該網站使用SSL/HTTPS。登錄工作在Safari但不在UIWebView

回答

7

原來,問題是這樣的:Asp.Net Forms Authentication when using iPhone UIWebView

(該UIWebView中發送一個奇怪的用戶代理標頭,ASP.NET無法識別,因此認爲它不能處理cookies,這些顯然已經固定在ASP.NET 4.5甚至更早版本,你可以解決它的服務器上,如果你有訪問ASP.NET站點)

和答案在這裏:​​

其鏈接到: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]; 
} 

這改變了用戶代理。有很多其他方法可以做到這一點,其中一些非常複雜(其中之一被稱爲「混合」),其中大部分都不起作用。

0

在這種情況下,UIWebView需要實現正確的委託協議方法,以允許您與後端體系結構進行通信。請看看this,thisthis

+0

你能指點我具體的會影響登錄? – JoelFan

相關問題