4

私が作成しているアプリの機能の 1 つは、ユーザーをキャンパス ポータル Web サイトにログインさせることです。使いやすくするために、ユーザーはユーザー名とパスワードをアプリに 1 回入力すると、それ以降のすべてのログイン用に保存されます。ユーザーがボタンをクリックすると、ログインするための情報が自動的に送信され、Web サイトがUIWebView.

ユーザー名とパスワードがそれぞれに保存されているとしましょうNSString。このデータを使用してプログラムでこの Web サイトUIWebViewにログインし、ページを .xml 形式で表示するにはどうすればよいですか?

投稿とフォームについてはほとんど知らないので、助けていただければ幸いです。

この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 のおかげで、Firebug を使用して 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ですか? に上記の URL をロードするだけでよいUIWebViewですか?

4

1 に答える 1

3

UIWebView を使用し、ユーザー名とパスワードを使用してhttps://ic.ridgefield.org/campus/verify.jspに http POST を実行します。

それがどのように機能するかを理解するには、Firefox ブラウザに Firebug をインストールし、firebug の [ネット] タブに移動してから、Web サイトを開いてユーザー名とパスワードを入力します。

コードを使用してそのアクションを模倣する必要があります。(私は常にサーバーから無効なユーザー名またはパスワードの応答を受け取ります。アカウントを持っていないため、ランダムなものをいくつか試します。サイトにサインアップがないため、これを確認する方法がありません)

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];
于 2012-12-16T04:57:18.103 に答える