我知道已经有一些关于它的答案,但我发誓我仍然没有找到一个明确的答案。我的问题很直接:如何向 PHP 页面发送 POST 请求?
奖励问题:我正在尝试在本地服务器(MAMP)上执行此操作。我需要改变一些东西才能让它工作吗?
我知道已经有一些关于它的答案,但我发誓我仍然没有找到一个明确的答案。我的问题很直接:如何向 PHP 页面发送 POST 请求?
奖励问题:我正在尝试在本地服务器(MAMP)上执行此操作。我需要改变一些东西才能让它工作吗?
像这样的东西应该工作:
NSURL *requestURL = [NSURL URLWithString:@"127.0.0.1/index.php?id=0"];
NSURLRequest *request = [NSURLRequest requestWithURL:requestURL];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
/编辑
对不起,我刚刚看到你在 POST 之后,而不是 GET,这样的东西应该可以工作:
这是我的做法。注意:这是一个同步请求;您也可以以异步方式执行此操作。后者对于云服务器来说是更好的风格,但对于本地服务器不会有太大的区别。
另外,我假设您正在提交一组表单字段(模拟 HTML 表单),而不是其他一些数据格式。在 PHP 端,这些字段可作为 $_POST 集合使用。
在下面的示例中,字段和值是虚拟的。替换真实的。
NSString *URLEncode(NSString *s)
{
return [s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
}
void SendPOST()
{
NSMutableURLRequest *Req = [[NSMutableURLRequest alloc] initWithURL:
[NSURL URLWithString:@"http://localhost/path/file.php"]];
//Plug a sensible URL here
[Req addValue: @"application/x-www-form-urlencoded"
forHTTPHeaderField: @"Content-Type"];
[Req setHTTPMethod: @"POST"];
//Let's compose the POST data out of fields and values!
NSMutableString *POSTData = [NSMutableString stringWithCapacity:1000];
[POSTData appendString: @"Param1="];
[POSTData appendString: URLEncode(@"Value1")];
[POSTData appendString: @"&Param2="];
[POSTData appendString: URLEncode(@"Value2")];
[Req setHTTPBody: [POSTData dataUsingEncoding: NSUTF8StringEncoding]];
//Your encoding might vary
NSURLResponse *Resp;
NSError *Err;
NSData *d = [NSURLConnection sendSynchronousRequest:Req
returningResponse:&Resp error:&Err];
if([(NSHTTPURLResponse*)Resp statusCode] != 200)
NSLog(@"We have an error: %d", [(NSHTTPURLResponse*)Resp statusCode]);
else
{
NSString *s = [[NSString alloc] initWithData:d
encoding: NSUTF8StringEncoding];
NSLog(@"Got some data back: %@", s);
[s release]; //Not needed if you're using ARC.
}
}