ASI使用紹介(Postとファイルアップロード)

3001 ワード

前節では、ASIの基本的な使用について説明し、デフォルトの使用方法はGetリクエスト方式です.質問があれば、ここをクリックしてください.Getリクエストはurlからパラメータを渡し,通常はサーバに所望のデータを「要求」する.Postリクエストは、フォームデータの提出が一般的で、リクエストデータの情報はリクエストメッセージの中で、バックグラウンドサーバがリクエスト情報を受け取った後、対応する処理を行います.例えば、ログイン操作です.この節では、ASIでのPostリクエストの使用について簡単に説明します.
ASIでPostリクエストを行うクラスは ASIFormDataRequest.
Example 1:ページ版163メールアドレス登録.
- (void)postRequest {
    NSURL *url = [NSURL URLWithString:@"http://mail.163.com/"];
    self.request = [ASIFormDataRequest requestWithURL:url];
    
    [self.request setPostValue:@"username" forKey:@"your username"];
    [self.request setPostValue:@"password" forKey:@"your password"];
    
    self.request.timeOutSeconds = 10;
    
    __weak typeof(self.request) that = self.request;
    self.request.completionBlock= ^{
        NSLog(@"data:%@",that.responseString);
    };
    
    [self.request startAsynchronous];
}

ログインに成功した場合、responseStringが戻ってきたデータは、あなたのページ版が成功したメールボックスリストページにログインしたhtmlソースコードです.
Example 2:携帯アルバムの写真をサーバーにアップロードします.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self uploadPictureFromAlbum];
}

#pragma mark -          (       )
- (void)uploadPictureFromAlbum {
    // 1.      
    UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
    
    //     ,              
    pickerController.delegate = self;
    
    // 2.     (  )
    pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    
    // 2.     (  ),          
    //pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    
    // 3.     
    [self presentViewController:pickerController animated:YES completion:nil];
}

#pragma mark -        ,    
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    // 1.       ,   UIImagePickerController
    [picker dismissViewControllerAnimated:YES completion:nil];
    
    //        
    UIImage *image = info[UIImagePickerControllerOriginalImage];
    
    [self uploadWithImage:image];
}


#pragma mark -         ,     (   )
- (void)uploadWithImage:(UIImage *)image {
    NSURL *postUrl = [NSURL URLWithString:@"post site url"];
    
    // 1.    
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:postUrl];
    
    // 2.           
    NSData *data = UIImagePNGRepresentation(image);
    [request setData:data withFileName:@"uploadfileName" andContentType:@"image/png" forKey:@"my picture"];
    
    // 3.POST    
    [request setPostValue:@"Jason" forKey:@"username"];
    [request setPostValue:@"123" forKey:@"password"];
    
    // 4.    
    [request startAsynchronous];
    
    // 5.    
    request.completionBlock = ^{
        NSLog(@"    ");
    };
    
}

本節ではASIにおけるPostリクエストの応用を簡単に紹介し,次の節ではASIを利用してネットワークリソースのダウンロードを完了することを紹介する.