multipartFormRequestWithMethod
AFNetworking の AFHttpClient を使用して作成しようとしています。Http Authorization ヘッダーを使用して、ASP.NET REST サービスで認証する必要があります。したがって、を使用してユーザー名とパスワードを Http Authorization ヘッダーに渡しますsetAuthorizationHeaderWithUsername:password:
。リクエストの本文で、数 MB の大きなファイルを渡しています。ヘッダー認証が失敗した場合、ファイル送信を完了する前に、リクエストがブロックされて失敗状態になることを望みます。認証が失敗した場合にデータベースが送信されないようにする何かがあるはずですが、何がわかりません。現在の状況では、AFHttpRequestOperation はファイルの送信を開始し、ファイル送信の最後にのみエラーを通知します。これはコードです:
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://v-moxdevelop/MOX.UploadDBService/UploadDB/"]];
NSString *psw = @"psw";
NSString *userName = @"username";
[httpClient setAuthorizationHeaderWithUsername:selectedLoginItem.user password:@"psw"];
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path: [NSString stringWithFormat:@"Upload/%@/%@/%@", UDID, [selectedLoginItem.firm stringByReplacingOccurrencesOfString:@"." withString:@""], [selectedLoginItem.user stringByReplacingOccurrencesOfString:@"." withString:@""]] parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:fileData name:zipFilePath fileName:[zipFilePath lastPathComponent] mimeType:@"application/zip"];
}];
[request setTimeoutInterval:INT32_MAX];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
__weak typeof(self) weakSelf = self;
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *locOperation, id responseObject) {
}failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
}];
[httpClient enqueueHTTPRequestOperation:operation];