2012-12-13 123 views
3

我正在製作的應用程序的功能之一涉及到將用戶登錄到我們的校園門戶網站。爲了便於使用,用戶可以在應用程序中輸入一次用戶名和密碼,並將其保存用於所有未來的登錄。當用戶點擊一個按鈕時,信息將自動發送到登錄頁面,網站將顯示在UIWebView中。以編程方式登錄到保存有用戶名和密碼的網站

讓我們說,用戶名和密碼都存儲在NSString。我如何使用這些數據以編程方式登錄到this website,並將其顯示在UIWebView

我對發佈和表單知之甚少,所以對我的幫助表示讚賞。

會像this Stackoverflow答案幫助?

這裏是我的代碼的外殼爲這個

- (IBAction)btnGo:(id)sender { 
    username = usernameField.text; 
    password = passwordField.text; 
    if (saveSwitch.isOn) { 
     //Save data if the user wants 
     AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     usernameSaved = username; 
     passwordSaved = password; 
     [appDelegate.listOfPortalCredentials replaceObjectAtIndex:0 withObject:usernameSaved]; 
     [appDelegate.listOfPortalCredentials replaceObjectAtIndex:1 withObject:passwordSaved]; 
    } 
    //Insert username and password to web form, log in to portal 
    //This is where I need help 
} 

編輯:

感謝KARTHIK我能找到相應的HTTP POST使用螢火蟲。它給了我:

appName=ridgefield&portalUrl=portal%2Fridgefield.jsp%3F%26rID%3D0.18423783694092&username=<username>&password=<password>&B1=Log+In&url=portal%2Fmain.xsl%3FrID%3D0.6845596700302482&lang=en 

其中和代表真正的用戶名和密碼。我相信這是我需要的。使用這個,我怎樣才能在UIWebView顯示登錄頁面?我只需要加載UIWebView中的上述URL?

+0

請顯示一些代碼。 – DrinkJavaCodeJava

+0

我會,但我沒有任何與此有關的東西。我在問怎麼做。我會發布一些與我想要做的事情相關的代碼,儘管... – DGund

+1

你對服務器有任何控制嗎? – Moxy

回答

3

使用UIWebView,並使用用戶名和密碼執行http POST到https://ic.ridgefield.org/campus/verify.jsp

要了解它是如何工作的,請在Firefox瀏覽器上安裝Firebug,然後轉到螢火蟲上的'Net'選項卡,然後打開您的網站並輸入一些用戶名/密碼。

您應該使用代碼來模擬該操作。 (我總是從服務器得到無效的用戶名或密碼響應,因爲我沒有帳戶,我嘗試了一些隨機的,因爲沒有註冊的網站,我沒有辦法驗證這一點)

UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.frame]; 
[self.view addSubview:webView]; 

NSString* username = @""; 
NSString* password = @""; 

NSURL* url = [NSURL URLWithString:@"https://ic.ridgefield.org/campus/verify.jsp"]; 

NSString* body = [NSString stringWithFormat:@"appName=ridgefield&username=%@&password=%@", username, password]; 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30]; 
request.HTTPMethod = @"POST"; 
request.HTTPBody = [body dataUsingEncoding:NSStringEncodingConversionAllowLossy]; 

[webView loadRequest:request]; 
+0

非常感謝您使用Firebug獲取HTTP Post。 (看我編輯的問題)你能幫我如何在UIWebView中自己執行它嗎? – DGund

+1

剛編輯我的回覆...希望這會有所幫助.. – Karthik

+0

非常感謝。我會在兩個小時內獎賞你的賞金(Stackoverflow在此之前不會允許) – DGund

相關問題