我正在尝试执行一个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];
答案 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并忽略回应,继续。