Я делаю страницу входа для приложения. Учетные данные хранятся в БД. поэтому я делаю службу промежуточного ПО ASP.Net.
Теперь ранее я делал метод GET для отправки запроса, который добавляет детали в URL STRING (что мне сейчас не нужно). Я хочу сделать метод POST. поэтому я нашел одну очень хорошую ссылку для этого, но я не уверен, правильно ли я это сделал или нет ИЛИ мой коллега по ASP.net сделал какую-то ошибку как есть 1007 * не работает .
Если учетные данные, т. Е. Имя пользователя и пароль верны, служба возвращает мне XML-код, подобный этому
<result>
success
</result>
или ошибка , если нет.
Так может любой, пожалуйста, скажите мне, является ли этот код правильным или нет, и если нет, то в чем заключается ошибка .... Спасибо за ваше время.
Код: -
@class FirstViewController;
@interface TestLoginViewController : UIViewController<UITextFieldDelegate,NSXMLParserDelegate>{
IBOutlet UITextField *txtUserName,*txtPassword;
IBOutlet UIButton *submitDetails;
FirstViewController *viewController;
NSString *currentElement,*status;
NSString *loginName,*password;
}
@property (nonatomic,retain) IBOutlet UITextField *txtUserName;
@property (nonatomic,retain) IBOutlet UITextField *txtPassword;
@property (retain) NSString *loginName;
@property (retain) NSString *password;
@property (retain) NSString *status;
-(IBAction)onTapSubmit:(id)sender;
-(IBAction)onTapReset;
@end
-(IBAction)onTapSubmit:(id)sender{
NSLog(@"UserName :- %@",txtUserName.text);
NSLog(@"Password :- %@",txtPassword.text);
if(![txtUserName.text isEqualToString:@""] && ![txtPassword.text isEqualToString:@""]){
// NSString *uName = txtUserName.text;
// NSString *uPass = txtPassword.text;
// NSString *post = [NSString stringWithFormat:@"username=%@&password=%@",[self urlEncodeValue:uName],[self urlEncodeValue:uPass]];
NSString *temp1 = [@"username=" stringByAppendingString:txtUserName.text];
NSString *temp2 = [temp1 stringByAppendingString:@"&password="];
NSString *post = [temp2 stringByAppendingString:txtPassword.text];
NSLog(@"Post String ==== %@",post);
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://iphonewebserver.wsisites.net/Default.aspx"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSXMLParser *parser= [[NSXMLParser alloc]initWithData:postData];
**EDITED :-**
NSURLResponse *response;
NSError *error;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Succeeded! Received %d bytes of data",[urlData length]);
NSString *outputdata = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding];
NSLog(@"%@", outputdata);
**//Nslog output
Succeeded! Received 39 bytes of data
2011-12-14 21:28:21.461 TestLogin[1094:207] <result><login>success</login></result>
2011-12-14 21:28:21.463 TestLogin[1094:207] Status======= (null)**
/*
NSMutableString *strURL=[[NSMutableString alloc] init];
[strURL appendFormat:@"http://iphonewebserver.wsisites.net/Default.aspx?username="];
[strURL appendFormat:@"%@",txtUserName.text];
[strURL appendFormat:@"&password="];
[strURL appendFormat:@"%@",txtPassword.text];
NSLog(@"urlformed:-%@",strURL);
NSURL *url= [NSURL URLWithString:strURL];
NSData *data= [NSData dataWithContentsOfURL:url];
[strURL release];
NSXMLParser *parser= [[NSXMLParser alloc]initWithData:data];
*/
parser.delegate=self;
[parser parse];
[parser release];
// if([self.status isEqualToString:@"success"]){
if(self.status){
viewController = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
[self presentModalViewController:viewController animated:YES];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Failed !!! " message:@"Please Enter Correct Username and Password" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
NSLog(@"%@",self.status);
}
}
else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Failed !!! " message:@"Please Enter the Username and Password" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK",nil];
[alert show];
[alert release];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex == 0)
{
[self onTapReset];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
txtUserName.delegate = self;
txtPassword.delegate = self;
txtUserName.text = @"admin";
txtPassword.text = @"pass";
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = elementName;
if([elementName isEqualToString:@"result"]) {
NSLog(@"%@",currentElement);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if([currentElement isEqualToString:@"login"]){
self.status=[NSString stringWithFormat:@"%@",string];
NSLog(@"%@",self.status);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
currentElement=@"";//required to reset current element
}
@end
Если что-то пропущено, пожалуйста, сообщите мне. :))