0

iOS アプリケーションへのログイン後の Web サイトを解析しようとしています。HTML タグの解析は hpple で正常に機能しますが、ログインを「パススルー」する方法がわかりません。

どうも!

4

1 に答える 1

1

Web サイトにログインするには、POST リクエストを送信する必要があります。AFNetworkingを使用すると、これを非常に簡単に行うことができます。

AFNetworking の場合:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSDictionary *parameters = @{@"usernameKey": @"theUsernameForTheWebsite",@"passwordKey": @"thePasswordForWebsite"};
[manager POST:@"http://example.com/loginpage.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Response: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

上記の例を用途に合わせて変更するには、次の HTML フォームの例をご覧ください。

<form class="form-horizontal" action="" method="post">
            <div class="form-group">
                <label for="inputUsername" class="col-lg-2 col-md-2 control-label">Username</label>
                <div class="col-lg-4 col-md-4">
                    <input type="text" class="form-control" id="inputUsername" placeholder="Username" name="inputUsername">
                </div>
            </div>
            <div class="form-group">
                <label for="inputPassword" class="col-lg-2 col-md-2 control-label">Password</label>
                <div class="col-lg-4 col-md-4">
                    <input type="password" class="form-control" id="inputPassword" name="inputPassword" placeholder="Password">
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-offset-2 col-lg-10">
                    <button type="submit" class="btn btn-primary">Sign in</button>
                </div>
            </div>
        </form>

要素のaction属性には、投稿リクエストを送信する必要がある場所への相対 URLがあります。("" は、このフォームがある現在のページに移動します)。例の要素の属性に注意してください。その属性は、ユーザー名とパスワードのパスワードに使用するキーになります。<form>name<input>parameters NSArray

ログインすると、Cookie が自動的に設定および処理され、AFNetworking を使用してさらに GET リクエストを送信し、ログインが必要なページを取得できます。

この例では、AFNetworking 2.0 (今日リリースされたと思います) を使用していたことに注意してください。

于 2013-09-27T20:01:43.147 に答える