1

我正在尝试执行一个 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]; 
4

3 回答 3

1

形成文档:使用 ASIFormDataRequest 发送表单 POST

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不再由其原作者维护。

于 2012-04-08T03:33:42.650 回答
0

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

于 2012-04-08T03:34:02.580 回答
0

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

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

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

于 2012-04-08T03:36:45.113 回答