1

multipartFormRequestWithMethodAFNetworking の 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];
4

0 に答える 0