[英]POST variables to php from Obj-c its doesnt work
您好,我是iOS和Xcode的新手,但是我必须做一个登录屏幕,尝试连接服务器上的php后,该登录屏幕没有任何响应。
- (IBAction)btnLogin:(id)sender {
NSInteger success = 0;
@try {
if([[self.insUsuario text] isEqualToString:@""] || [[self.insSenha text] isEqualToString:@""] ) {
[self alertStatus:@"Insira o email e a senha!" :@"Erro" :0];
} else {
//ViewPontos *WP = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewPontos"];
//WP.gUser = self.insUsuario.text;
NSString *post =[[NSString alloc] initWithFormat:@"usuario=%@&senha=%@",[self.insUsuario text],[self.insSenha text]];
NSLog(@"PostData: %@",post);
NSURL *url=[NSURL URLWithString:@"http://emporio56/apiapp/pegarPontos.php"];
//NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSLog(@"DATA %@", postData);
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
//[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
[request setHTTPShouldHandleCookies:YES];
NSLog(@"%@", request);
NSURLConnection *conn= [[NSURLConnection alloc]initWithRequest:request delegate:self];
if(conn)
{
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Response code: %ld", (long)[response statusCode]);
if ([response statusCode] >= 200 && [response statusCode] < 300)
{
//NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Response ==> %@", response);
NSError *error = nil;
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:urlData options:NSJSONReadingMutableContainers error:&error];
success = [jsonData[@"success"] integerValue];
NSLog(@"Success: %ld",(long)success);
if(success == 1)
{
NSLog(@"Login SUCCESS");
} else {
NSString *error_msg = (NSString *) jsonData[@"error_message"];
[self alertStatus:error_msg :@"Erro" :0];
}
} else {
//if (error) NSLog(@"Error: %@", error);
[self alertStatus:@"Erro!" :@"Sign in Failed!" :0];
}
NSLog(@"Conectado");
}
else
{
NSLog(@"Nao conectou");
}
//[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
}
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
[self alertStatus:@"Sign in Failed." :@"Erro" :0];
}
if (success) {
[self performSegueWithIdentifier:@"login_success" sender:self];
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
// A response has been received, this is where we initialize the instance var you created
// so that we can append data to it in the didReceiveData method
// Furthermore, this method is called each time there is a redirect so reinitializing it
// also serves to clear it
_responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Append the new data to the instance variable you declared
[_responseData appendData:data];
}
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse*)cachedResponse {
// Return nil to indicate not necessary to store a cached response for this connection
return nil;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// The request is complete and data has been received
// You can parse the stuff in your instance variable now
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
// The request has failed for some reason!
// Check the error var
}
在运行代码以测试并输入用户名和密码之后,我没有从服务器获得响应,始终response = (null)
,有人知道该如何解决? 因为我已经尝试了大部分可以在网络上找到的代码,但是人们说的却不尽人意,我使用相同的php连接android应用程序,但是它可以正常工作,所以我在我的代码上做错了什么将用户名和密码发布到php文件中,并连接到数据库。
对不起,这个问题,但是我不知道发生了什么
请尝试这个。 希望它能解决您的问题。
NSString *stringUrl = [NSString stringWithFormat:@"http://emporio56/apiapp/pegarPontos.php?usuario=%@&senha=%@",[self.insUsuario text],[self.insSenha text]];
NSURL *url = [NSURL URLWithString:stringUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError)
{
if (data.length > 0 && connectionError == nil)
{
NSDictionary *dicYourResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
NSLog(@"%@",dicYourResponse);
}
}];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.