iOS アプリケーションへのログイン後の Web サイトを解析しようとしています。HTML タグの解析は hpple で正常に機能しますが、ログインを「パススルー」する方法がわかりません。
どうも!
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 (今日リリースされたと思います) を使用していたことに注意してください。