2010-03-12 124 views
0

我正在尝试将数据从iPhone发布到PHP web服务器。这是我下面的代码:iPhone编程发布数据

NSString * fname = @"Brain."; 
NSString * location = @"Germany"; 

NSString *post =[NSString stringWithFormat:@"fname=Test&location=Germany"]; 

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://frisbee.brianpagan.net/upload.php"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 

NSError *error; 
NSURLResponse *response; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
NSLog(data); 


    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
} 

调试器窗口输出:

Session started at 2010-03-12 00:03:04 +0100.] 
2010-03-12 00:03:05.871 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e061f0 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x28e4da 0x23fe 0x238a) 
2010-03-12 00:03:05.873 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e07470 of class NSConcreteMutableData autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x2c7a22 0x2428 0x238a) 
2010-03-12 00:03:05.873 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e07030 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x28e4da 0x2470 0x238a) 
2010-03-12 00:03:05.874 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e07710 of class NSMutableURLRequest autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x24bd 0x238a) 
2010-03-12 00:03:05.877 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e08e80 of class NSURL autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x2c3891 0x24eb 0x238a) 
2010-03-12 00:03:05.878 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e099b0 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x37e6d4 0x30a6a9 0x25ca 0x238a) 
2010-03-12 00:03:05.880 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e0a9a0 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x382b13 0x37e6f0 0x30a6a9 0x25ca 0x238a) 
2010-03-12 00:03:05.881 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e0ab30 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x37e726 0x30a6a9 0x25ca 0x238a) 
2010-03-12 00:03:05.882 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e0ab50 of class NSCFString autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x2df953 0x37e742 0x30a6a9 0x25ca 0x238a) 
2010-03-12 00:03:05.884 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e0bd20 of class NSThread autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x2893d4 0x2df65e 0x946ab89e 0x2e06f5 0x2f0411 0x2f02b3 0x2f0237 0x946ab89e 0x2f01e5 0x37e79c 0x30a6a9 0x25ca 0x238a) 
2010-03-12 00:03:05.892 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e0fb10 of class NSCFArray autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x2df6b0 0x946ab89e 0x2e06f5 0x2f0411 0x2f02b3 0x2f0237 0x946ab89e 0x2f01e5 0x37e79c 0x30a6a9 0x25ca 0x238a) 
2010-03-12 00:03:06.228 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e10b90 of class NSHTTPURLResponse autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x30a72f 0x25ca 0x238a) 
2010-03-12 00:03:06.228 projectx[6357:20b] *** _NSAutoreleaseNoPool(): Object 0x3e0ff40 of class NSCFData autoreleased with no pool in place - just leaking 
Stack: (0x3226af 0x283e52 0x30a7a3 0x25ca 0x238a) 
2010-03-12 00:03:06.229 projectx[6357:20b] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
Welcome Test!<br /> 
Your location is Germany . 
</body> 

似乎工作,然后我创建了一个简单的PHP读取后的数据,并将其插入到MySQL :

Welcome <?php echo $_POST["fname"]; ?>!<br /> 
Your location is <?php echo $_POST["location"]; ?> . 
<?php $con = mysql_connect("localhost","root",""); 

if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
$FirstName =$_POST["fname"]; 
$location =$_POST["location"]; 

mysql_select_db("test", $con); //what is your database name, 
//Create a table call persons, or u can use any table 
mysql_query("INSERT INTO my_db (firstName, location) 
VALUES ($FirstName,$location)"); 


mysql_close($con); 
?> 

但该页面不显示我的发布变量。它也不会插入到mysql中。有任何想法吗?谢谢你

回答

2

你错误的原因是你在创建自动释放池之前试图自动释放对象。

看起来您已将代码放置在main.c文件中。有了iPhone应用程序,您不希望这样做,您想要将代码放入主要的App委托类和创建的类中。

http://www.tuaw.com/2009/04/27/iphone-dev-101-the-hello-world-app/

: 我会建议尝试更复杂的东西之前,首先做一个Hello World应用程序