question_id = 28、value = 'yes'、 null
今のところ
、関数は取得します
{
question_id = 22,
value = 'yes',
array = (9=>1, 28 => 0)
}
9 は、はいの場合は ID 1、いいえの場合は 0 です。配列は以前のすべての質問と回答を保存し、質問がない場合は結果を表示します。はいといいえの2つのアクションボタンを使用してこれを実装/投稿/するにはどうすればよいですか??
question_id = 28、value = 'yes'、 null
今のところ
、関数は取得します
{
question_id = 22,
value = 'yes',
array = (9=>1, 28 => 0)
}
9 は、はいの場合は ID 1、いいえの場合は 0 です。配列は以前のすべての質問と回答を保存し、質問がない場合は結果を表示します。はいといいえの2つのアクションボタンを使用してこれを実装/投稿/するにはどうすればよいですか??
この記事 で説明されているように、次のコード スニペットを使用できます。
ここでは、POST メソッドの使い方を簡単に説明します。
1.実際のユーザー名とパスワードで投稿文字列を設定します。
NSString *post = [NSString stringWithFormat:@"&Username=%@&Password=%@",@"username",@"password"];
2.を使用して投稿文字列をエンコードし
NSASCIIStringEncoding
、NSData 形式で送信する必要がある投稿文字列もエンコードします。NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
データの実際の長さを送信する必要があります。ポスト文字列の長さを計算します。
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
3.
HTTP
メソッド、http ヘッダー フィールド、ポスト文字列の長さなどのすべてのプロパティを含む Urlrequest を作成します。URLRequest
オブジェクトを作成して初期化します。NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
そのリクエストにデータを送信する URL を設定します。
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.abcde.com/xyz/login.aspx"]]];
ここで、HTTPメソッド ( POST または GET ) を設定します。この行をそのままコードに記述します。
[request setHTTPMethod:@"POST"];
HTTP
ヘッダー フィールドにポスト データの長さを設定します。[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
また、HTTP ヘッダー フィールドのエンコードされた値を設定します。
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
HTTPBody
postData で urlrequest を設定します。[request setHTTPBody:postData];
4. URLConnection オブジェクトを作成します。URLRequest で初期化します。
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
初期化された URL 接続を返し、URL 要求のデータのロードを開始します。以下のようにif/elseステートメント
URL
だけを使用して、接続が正しく行われたかどうかを確認できます。if(conn) { NSLog(@”Connection Successful”) } else { NSLog(@”Connection could not be made”); }
5. HTTP リクエストからデータを受け取るには、URLConnection クラス リファレンスで提供されているデリゲート メソッドを使用できます。デリゲートの方法は以下の通りです。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
上記のメソッドは、post メソッドを使用して取得したデータを受け取るために使用されます。
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
このメソッドを使用すると、サーバーに接続されていない場合にエラー レポートを受け取ることができます。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
上記のメソッドは、接続が正常に確立された後にデータを処理するために使用されます。
方法については、こちら と こちらの ドキュメントも参照POST
してください。
HTTPPost メソッドのソース コードを使用した最適な例を次に示します。
編集:
-(void) buttonPressed:(id) sender
{
NSURL *url = [NSURL URLWithString:@"URL"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setShouldStreamPostDataFromDisk:YES];
[request setDidFinishSelector:@selector(uploadFinished:)];
[request setDidFailSelector:@selector(uploadFail:)];
[request setTimeOutSeconds:300];
[request setPostValue:@"Login" forKey:@"action"];
[request setPostValue:Yourvalue1 forKey:@"key1"];
[request setPostValue:Yourvalue2 forKey:@"key2"];
.
.
.
request.delegate = self;
[self.sendLoader startAnimating];
[request startAsynchronous];
}
#pragma Mark -
#pragma Mark - ASIHTTPRequest Methods
- (void) uploadFinished:(ASIHTTPRequest *)request
{
NSString *str = [request responseString];// convert it as JSON also.
}
- (void) uploadFail:(ASIHTTPRequest *)request
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",@"") message:NSLocalizedString(@"Connection failed !!",@"") delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitles:nil];
[alert show];
}