2012-04-08 11 views
1

データベースのフィールドをインクリメントするPHPスクリプトを実行しようとしています。私はスクリプトが動作しているし、現在ASIHTTPRequestを使用してデータベースを完全に変更していますが、私は戻り値を必要としないので、別のメソッドを使用する必要があるように感じます。objective-cを使用したPHPスクリプトの実行

これはHTTP POSTと呼ばれていますか? 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

形。 GETはサーバ上で何も更新しないので、POST:[request setRequestMethod:@"POST"]を使用するのが適切です。 doScript.phpにHTTP 204 No Contentの返信を返すことができます。 PHP header()機能。しかし、サーバーで実際に何が起きたかに関する少なくともいくつかの種類のプロトコル固有の状態コードを返すのは良い設計です。私はしばしば{"status":"OK"}のような簡単なJSON応答を返します。

+0

ですから、別のAPIに転送する必要がありますか?もしそうなら、どちらをお勧めしますか?ありがとう。 – Apollo

+0

私がリンクしている投稿にはいくつかの推奨事項があります。私は現在AFNetworkingを使用しています。 – vikingosegundo

0

ASIHTTPRequestは、GETリクエストを送信していないことに、注意して、投稿しない

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

これは、POSTではなく、一度のリクエストです。

しかし、GET要求でデータベースを更新することはないので、POSTを使用する必要があります。

これを行う1つの方法は、すぐに応答を返してからデータベースを更新することですが、このライブラリはもはやメンテナンスされていないため(http://allseeing-i.com/ASIHTTPRequest/)NSUrlConnectionを使用し、続ける。

+0

@ James.Black NSURLConnectionであなたのapprocahに戻ってきます...これは実現可能だと思いますか?私は基本的にボタンを押してこのスクリプトをバックグラウンドで実行できるようにしたいと思っています..... – Apollo

+0

@ derek.lo - はい、バックグラウンドでこれを行うことができます。これを見てください:http://stackoverflow.com/questions/1728631/asynchronous-request-to-the-server-from-background-thread –

関連する問題