我尝试使用NSURLSession登录Mistar(或AFNetworking,或其他什么,似乎合适) 继承我的代码:
- (void)loginToMistar {
//Create POST request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
//Create and send request
NSURL *url = [NSURL URLWithString:@"https://mistar.oakland.k12.mi.us/novi/StudentPortal/Home/Login"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSString *postString = [NSString stringWithFormat:@"Pin=%@&Password=%@", @"20005012", @"wildcats"];
NSData * postBody = [postString dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:postBody];
[request addValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// do whatever with the data...and errors
if ([data length] > 0 && error == nil) {
NSString *loggedInPage = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(loggedInPage);
}
else {
NSLog(@"error");
}
}];
}
登录,并返回页面的HTML内容,说明我的登录失败。所以它成功传递了一个请求,但它失败了,而是给了Error with login
页面。
我的要求出了什么问题?
答案 0 :(得分:1)
由于您要将数据发布到服务器,因此必须为NSMutableURLRequest对象调用此方法 -
[urlRequest setHTTPMethod:@“POST”];
默认的HTTP方法是“GET”。阅读更多 -
答案 1 :(得分:0)
如果您使用NSURLConnection
,sendAsynchronousRequest:queue:completionHandler:
的便利 API并要求身份验证,则必须以适当的方式传递URL中的凭据。这意味着服务器支持这种天真的身份验证方法。
为了更好地控制身份验证过程,您应该使用NSURLSession
或NSURLConnection
使用委托。