-2

question_id = 28、value = 'yes'、 null今のところ
、関数は取得します

{
 question_id = 22, 
 value = 'yes', 
 array = (9=>1, 28 => 0)
}

9 は、はいの場合は ID 1、いいえの場合は 0 です。配列は以前のすべての質問と回答を保存し、質問がない場合は結果を表示します。はいといいえの2つのアクションボタンを使用してこれを実装/投稿/するにはどうすればよいですか??

4

1 に答える 1

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"];

HTTPBodypostData で 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];

}
于 2013-03-14T11:14:07.640 に答える