web-dev-qa-db-ja.com

NSURLConnectionデリゲートメソッド

NSURLConnectionデリゲートメソッドの実装の例を見つけるのに苦労しています。

ボタンクリックでHTTPPOSTを使用してデータを送信したい。 「送信」画面と「送信」の作り方がわからない。 (私はスピナーの使い方を知っており、それらを使用します)

ボットンクリックアクションでこのコードを使用していますが、デリゲートのものを使用できません。私の現在の設定でそれらを実装する方法がわかりません。

NSMutableURLRequest *request = 
    [[NSMutableURLRequest alloc] initWithURL:
     [NSURL URLWithString:@"http://myURL.com"]];

    [request setHTTPMethod:@"POST"];

    NSString *postString = [wait stringByAppendingString:co];

    [request setValue:[NSString 
                       stringWithFormat:@"%d", [postString length]] 
   forHTTPHeaderField:@"Content-length"];



    [request setHTTPBody:[postString 
                          dataUsingEncoding:NSUTF8StringEncoding]];

    //[[NSURLConnection alloc] initWithRequest:request delegate:self];
    [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];


    [SVProgressHUD dismissWithSuccess:@"Submission Successful"];
9
socbrian

新しいNSURLConnectionDataDelegateプロトコルを使用する必要があります。

私はここでいくつかの例を見つけました:

http://blog.kemalkocabiyik.com/index.php/2012/02/fetching-data-with-getpost-methods-by-using-nsurlconnection/

ポルトガル語が読める場合: http://www.quaddro.com.br/blog/desenvolvimento-ios/baixando-conteudo-com-nsurlconnection-e-nsurlconnectiondatadelegate-no-ios

8
Ricardo Rivaldo
- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"Did Receive Response %@", response);
    responseData = [[NSMutableData alloc]init];
}
- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
{
    //NSLog(@"Did Receive Data %@", data);
    [responseData appendData:data];
}
- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
{
    NSLog(@"Did Fail");
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"Did Finish");
    // Do something with responseData
}
25
Eric
//Connection request
 -(void)requestURL:(NSString *)strURL
    {
        // Create the request.
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:strURL]];

        // Create url connection and fire request
        NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    }


    //Delegate methods
    - (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *)response
    {
        NSLog(@"Did Receive Response %@", response);
        responseData = [[NSMutableData alloc]init];
    }
    - (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
    {
        //NSLog(@"Did Receive Data %@", data);
        [responseData appendData:data];
    }
    - (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
    {
        NSLog(@"Did Fail");
    }
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSLog(@"Did Finish");
        // Do something with responseData

        NSString *strData=[[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];

        NSLog(@"Responce:%@",strData);
    }

http://codewithchris.com/tutorial-how-to-use-ios-nsurlconnection-by-example/

5
Sunil Targe

このコードでは、ログインボタンでGCD、Activity Indicator、UIButtonアクションを使用します。最初に別のスレッドでStartActivityindicatorを呼び出し、Activityindicatorを削除または停止するまで移動し続けます。次に、GCDキューにログインするためにWebサービスを呼び出します。サーバー呼び出しのメインキューから応答を受信したときに、UIを更新します。

// After the interface declration 
@interface LoginViewController ()
{

NSData *responseData;
dispatch_queue_t myqueue;

}    
//Button Action 
- (IBAction)Login_Button_Action:(id)sender

{

 [NSThread detachNewThreadSelector: @selector(StartActivityindicator) toTarget:self withObject:nil];
myqueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_group_t group=dispatch_group_create();
dispatch_group_async(group, myqueue, ^{ [self loginWebService];});
}
-(void)loginWebService
{
//Combine Both url and parameters
    NSString *UrlWithParameters = [NSString stringWithFormat:@"http://www.xxxxx.com?count=%@&user=%@&email=%@&password=%@",@"4",@"Username",s@"UserEmail",@"PAssword String"];
//Pass UrlWithParameters to NSURL
NSURL *ServiceURL =[NSURL URLWithString:UrlWithParameters];

NSMutableURLRequest *serviceRequest =[NSMutableURLRequest requestWithURL:ServiceURL];
[serviceRequest setHTTPMethod:@"POST"];

[serviceRequest setValue:@"application/json" forHTTPHeaderField:@"accept"];
[serviceRequest setValue:@"application/json" forHTTPHeaderField:@"content-type"];

//GEt Response Here
NSError *err;
NSURLResponse *response;
responseData = [NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:&response error:&err];

NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
NSInteger code = [httpResponse statusCode];
// check status code for response from server and do RND for code if you recive anything than 200 
NSLog(@"~~~~~ Status code: %ld",(long)code);
if (code ==200)
{
 // your response is here if you call right  
    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];  

 dispatch_async(dispatch_get_main_queue(),^{
       // place the code here to update UI with your received response 
        [NSThread detachNewThreadSelector: @selector(StopActivityindicator) toTarget:self withObject:nil];
        });
}
}
//Activity indicator Method to display 
- (void) StartActivityindicator
{
mySpinner.hidden = NO;
[mySpinner startAnimating];
}
- (void) StopActivityindicator
{
mySpinner.hidden = YES;
[mySpinner stopAnimating];
}
2
user3189586