すでにいくつかの答えがあることは知っていますが、それでも明確な答えが見つからなかったことを誓います。私の質問はまっすぐです: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];
/編集
申し訳ありませんが、GETではなくPOSTを実行しているのを見たところ、次のように動作するはずです。
これが私のやり方です。注:これは同期要求です。非同期で行うこともできます。後者はクラウドサーバーでははるかに優れたスタイルですが、ローカルサーバーではそれほど違いはありません。
また、他のデータ形式ではなく、一連のフォームフィールド(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.
}
}