我得到了以下代码,用于向PHP页面发送POST请求:
NSString *urlString = @"http://example.php";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *variableToSend = [NSString stringWithFormat:@"test=my real data"];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d", [variableToSend length]] forHTTPHeaderField:@"Content-length"];
[request setHTTPBody:[variableToSend dataUsingEncoding:NSUTF8StringEncoding]];
// Create url connection and fire request
NSData *response = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil error:nil];
NSLog(@"Response: %@",[[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]);
这很好。然而,如果我想要更多的变量呢?使用上面的代码,我可以在PHP中这样做:$_POST['test'],它将打印出"我的真实数据"。但是如果我想要另一个POST参数呢?也许像$_POST["另一个"]?我该怎么做呢?
谢谢大家
如果你需要从int, float, string等发送数据…你可以这样做:例如,您想要发送姓名和姓氏
NSString *sendData = @"name=";
sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", name]];
sendData = [sendData stringByAppendingString:@"&lastname="];
sendData = [sendData stringByAppendingString:[NSString stringWithFormat:@"%@", lastname]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com/userName"]];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
//Here you send your data
[request setHTTPBody:[sendData dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPMethod:@"POST"];
NSError *error = nil;
NSURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (error)
{
NSLog(@"Error");
}
else
{
//The response is in data
}
php中返回json_encode数组,然后在ios中使用NSDictionary读取
您感兴趣的行是这一行:
NSString *variableToSend = [NSString stringWithFormat:@"test=my real data"];
在这样的HTTP请求中,使用&
分隔参数,如下所示:
NSString *variableToSend = [NSString stringWithFormat:@"field1=value&field2=othervalue"];