使用objective-c执行PHP脚本

时间:2012-04-08 03:27:40

标签: php iphone objective-c ios

我正在尝试执行一个PHP脚本,该脚本会增加数据库中的字段。我有脚本工作,我目前正在使用ASIHTTPRequest完美地修改数据库,但我觉得我应该使用不同的方法,因为我不需要返回。

这是什么叫做HTTP POST?

    incrementOrDecrementURL = [[NSString alloc] initWithFormat:@"http://myURL/doScript.php"];

NSURL *requestURL = [[NSURL alloc] initWithString:incrementOrDecrementURL];

//The actual request
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:requestURL];
// Becoming the request delegate
//To get callbacks like requestFinished: or requestFailed:
[request setDelegate:self];    

// Start request
[request startAsynchronous]; 

3 个答案:

答案 0 :(得分:1)

形成docs: Sending a form POST with ASIFormDataRequest

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];

但请注意,ASIHTTPRequest不是maintained anymore by it's original author.

答案 1 :(得分:0)

ASIHTTPRequest默认发送GET请求,而不是POST。 GET在服务器上不更新任何内容是正确的,因此您应该使用POST:[request setRequestMethod:@"POST"]。您可以让doScript.php返回HTTP 204无内容响应。 PHP header()函数。但是至少返回某种特定于协议的状态代码是很好的设计,关于服务器上实际发生的事情。我经常只返回一个简单的JSON响应,例如{"status":"OK"}

答案 2 :(得分:0)

这将是一个单向请求,而不是POST。

但是,您永远不应该使用GET请求更新任何数据库,因此您应该使用POST。

执行此操作的一种方法是立即返回响应,然后更新数据库,但更好的方法,因为不再维护此库(http://allseeing-i.com/ASIHTTPRequest/),您可能希望使用NSUrlConnection并忽略回应,继续。