我为应用创建了一个登录页面。凭据详细信息存储在DB中。所以我正在制作ASP.Net中间件服务。
现在我以前正在做GET方法来发送请求,该请求会在URL STRING中附加详细信息(我现在不想要)。我想做POST方法。所以我找到了一个非常好的link,但我不确定我是否正确完成了或我的ASP.net同事因为不工作。
如果凭据即用户名和密码正确,则服务会返回一个类似这样的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
如果我遗失任何内容,请告诉我。 :))
答案 0 :(得分:1)
您已创建了请求,但未将其发送到任何地方 使用您的请求实例化 NSURLConnection 对象 - 将其发送到服务器并将结果报告给其代理。
答案 1 :(得分:0)
最后我得到了我的代码工作,因为通常我做了一个非常基本的错误....我没有给解析器正确的数据解析....这是代码所有工作正常和良好。
代码: -
@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 *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];
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);
NSXMLParser *parser= [[NSXMLParser alloc]initWithData:urlData];
parser.delegate=self;
[parser parse];
[parser release];
if([self.status isEqualToString:@"success"]){
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
所以享受守则并享受乐趣......:))