2011-04-07 81 views
0

嗨朋友我在這裏做服務器數據庫驗證用戶名和密碼 給定的服務器網址我想我錯了我不認爲我的代碼是正確的 請一些幫助我如何從服務器數據庫中的iphone驗證用戶名和密碼驗證用戶名和密碼從服務器數據庫在iphone

-(IBAction)buttonClick:(id)sender 
{ 

NSString* username = nameInput.text; 
NSString* pass = passInput.text; 

if([nameInput.text isEqualToString:@"" ]&& [passInput.text isEqualToString:@""]) 
{ 

    //greeting.text = @"Input Your Value"; 
    //[nameInput resignFirstResponder]; 
    //[passInput resignFirstResponder]; 
    //return; 
} 

NSString *post = 
[[NSString alloc] initWithFormat:@"uname=%@ & pwd=%@",username,pass]; 

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

NSURL *url = [NSURL URLWithString:@"http://server:85/VirtualTerminal/RecordAttendance.aspx"];//@"https://www.google.com/accounts/ServiceLogin?service=reader&passive=1209600&continue=http://www.google.co.in/reader/?hl%3Den%26tab%3Dwy&followup=http://www.google.co.in/reader/?hl%3Den%26tab%3Dwy&hl=en"]; //@"http://www.chakrainteractive.com/mob/iphone/login/chckusr.php"]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPBody:postData]; 


NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

if(theConnection) 
{ 
    webData = [[NSMutableData data] retain]; 
    //test *t=[[test alloc]initWithNibName:@"test" bundle:nil]; 
    //[self presentModalViewController:t animated:YES]; 
    //[t release]; 

} 
else 
{ 

} 
//} 
[nameInput resignFirstResponder]; 
[passInput resignFirstResponder]; 
nameInput.text = nil; 
passInput.text = nil; 
k 
[webData appendData:data]; 
} 
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 

[connection release]; 
[webData release]; 
} 
-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 

NSString *loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 
NSLog(@"loginStatus"); 
greeting.text = loginStatus; 
[loginStatus release]; 



[connection release]; 
[webData release]; 
} 
+0

究竟發生了什麼?你有沒有嘗試在你的委託方法中加入一些斷點來查看它們是否被調用? – scalbatty 2011-04-07 11:51:35

+0

嗨我把斷點它工作正常,但如果把錯誤的用戶名和密碼它也工作我想如果用戶名和密碼匹配從服務器數據庫然後下一頁應該來我試試,但它不工作我對此stuk請幫助我 – user692277 2011-04-08 05:10:02

回答

0

嘗試用以下HTTPHeaderFields設置。

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];  
[request setValue:@"UTF-8" forHTTPHeaderField:@"charset"];  
[request setValue:@"XMLHttpRequest" forHTTPHeaderField:@"X-Requested-With"]; 

我相信登錄調用可能是一個「GET」方法,而不是「POST」。

再次通過您撥打電話的服務器URL進行確認。

謝謝。

+0

hifriend我嘗試,但它仍然無法正常工作,你可以給我答案 – user692277 2011-04-08 10:40:41

0

您可以使用此代碼:

-(IBAction)btnclick1:(id)sender 

{ 

    recordResult=FALSE; 


    [email protected]"Processing"; 


    NSString *soapMessage=[NSString stringWithFormat:@" WEB SERVICE ",nameInput.text,passInput.text]; 


    NSLog(@"%@",soapMessage); 


NSURL *url=[NSURL URLWithString:@"http://SOME URL.asmx"]; 

    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:url]; 

    NSString *msgLength=[NSString stringWithFormat:@"%d",[soapMessage length]]; 




    [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

    [theRequest addValue:@"http://tempuri.org/webservicename" forHTTPHeaderField:@"SOAPAction"]; 

    [theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 

    [theRequest setHTTPMethod:@"POST"]; 

    [theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSURLConnection *theConnection=[[NSURLConnection alloc]initWithRequest:theRequest delegate:self]; 

    [myActivity startAnimating]; 

    if(theConnection) 

    { 

     webData=[[NSMutableData data]retain]; 

    } 

    else 

    { 

     NSLog(@"theConnection is NULL"); 

    } 


     [nameInpt resignFirstResponder]; 

     [passinpt resignFirstResponder]; 
} 
----- 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

{ 

    [webData setLength: 0]; 

} 

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

{ 

    [webData appendData:data]; 

} 

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 

{ 

    NSLog(@"ERROR with theConenction"); 

    [connection release]; 

    [webData release]; 

} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 

{ 

    NSLog(@"DONE.Received Bytes:%d",[webData length]); 

    NSString *theXML =[[NSString alloc]initWithBytes:[webData mutableBytes]length: 

[webData length] encoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",theXML); 

    [theXML release]; 

    if(xmlParser) 
    { 

     [xmlParser release]; 
     //xmlParser=nil; 
    } 

    xmlParser=[[NSXMLParser alloc]initWithData:webData]; 

    [xmlParser setDelegate:self]; 

    [xmlParser setShouldResolveExternalEntities:YES]; 

    [xmlParser parse]; 

    [myActivity stopAnimating]; 

    [webData release]; 
    //webData = nil; 

    [connection release]; 
} 

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName 


{ 
    if([myTxt1.text isEqualToString:@"webservresult"]) 

{ 

     if(!soapResult) 

     { 

      soapResult=[[NSMutableString alloc]init]; 

     } 

     recordResult=TRUE; 

    } 

} 

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 

{ 

    if(recordResult) 

    { 

     [soapResult appendString:string]; 

    } 

} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 

{ 

    if([myTxt1.text isEqualToString:@"wsresult"]) 

    { 

     recordResult=FALSE;  

     greeting.text=[NSString stringWithFormat:@"webservicename Result is:%@",soapResult]; 

     [soapResult release]; 

     soapResult=nil; 

    } 
} 

就是這樣。