問題
AFNetworkingを使用して、画像を8ファイルアップロードする処理を実行したところ、なぜか7ファイル目から下記のエラーが発生してアップロードに失敗する。
"リクエスト・ボディ・ストリームがなくなりました"
対処法
GitHubのIssueに対応方法がアップされていました。
https://github.com/AFNetworking/AFNetworking/issues/1713
どうやら、AFURLConnectionOperationのカテゴリを作成して、下記のメソッドを追加すればOK。
AFURLConnectionOperation+AFURLConnectionOperationFix
@interface AFURLConnectionOperation (AFURLConnectionOperationFix)
@end
@implementation AFURLConnectionOperation (AFURLConnectionOperationFix)
- (NSInputStream *)connection:(NSURLConnection __unused *)connection needNewBodyStream:(NSURLRequest *)request {
if ([request.HTTPBodyStream conformsToProtocol:@protocol(NSCopying)]) {
return [request.HTTPBodyStream copy];
}
return nil;
}
@end
見て分かる通り、HTTPBodyStreamをcopyしているのがわかります。
これで無事アップロードされることが確認できました。