4

AFNetworkingを使用してマルチパートフォームをWebサーバーに送信していますが、に問題がありますAFHTTPRequestOperation。それは成功であり、私がそれを開始した後、失敗ブロックは決して呼び出されません。

これが私のコードです(履歴書)

    NSMutableURLRequest *request = [[ServerAPI sharedClient] multipartFormRequestWithMethod:@"POST" path:postUrl parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
        [formData appendPartWithFileData:picture.picture_data name:@"InputFile" fileName:picture.name mimeType:@"image/jpg"];
    }];

    AFHTTPRequestOperation *operation = [[ServerAPI sharedClient] HTTPRequestOperationWithRequest: request success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success");
    } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Failure");
    }];

    [operation setUploadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
        NSLog(@"%f", (totalBytesRead / (float) totalBytesExpectedToRead));
    }];         
    [[ServerAPI sharedClient] enqueueHTTPRequestOperation:operation];

進行状況のログを確認できますが、成功ブロックと失敗ブロックが呼び出されることはありません。

picture.picture_dataは ServerAPIでNSData初期化され、はのサブクラスであり、シングルトンメソッドです。UIImageJPEGRepresentation(image, 0.7)AFHTTPClientsharedCliend

適切なエラーメッセージがあっても、AFNetworkingがブロックを呼び出さない理由はどれですか?

皆さん、ありがとうございました!

編集

このURLの直前に同じURLでgetリクエストを実行すると、通常どおり機能します。私が使用しているURLは次のとおりです。part/_layouts/UploadEx.aspx?List=%7BD432BF97-7175-40C1-8E0D-27D8661CBC90%7D&RootFolder=%2Fpwa%2Fpart%2FLibrary&Source=http%3A%2F%2Fwww%2Emysite%2Ecom%2Fpwa%2Fpart%2FLibrary%2FForms%2FAllItems%2Easpx&IsDlg=1

4

1 に答える 1

0

コードで、postUrl. はBaseURL+postURL有効である必要があります。URL を使用して通常の Web ブラウザーを使用して画像をアップロードしてみてくださいBaseURL+postURL

編集

メソッドHTTPRequestOperationWithRequest:success:failure:はファイルのアップロードでは機能しませんが、json/html のフェッチでは機能します。使ってみる

AFHTTPRequestOperation *operation = [[AFJSONRequestOperation alloc] initWithRequest:request];

[operation setUploadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
        NSLog(@"%f", (totalBytesRead / (float) totalBytesExpectedToRead));
    }];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success");
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Failure");
    }];

[[ServerAPI sharedClient] enqueueHTTPRequestOperation:operation];
于 2013-02-18T09:16:58.120 に答える