0
我正在使用AFNetworking和AFJSONRequestOperation使用此代碼將圖像和一些參數一起發送到我的REST服務器。AFNetworking - POST文件進度隨機卡住
NSData* uploadFile = nil;
if ([params objectForKey:@"file"]) {
uploadFile = (NSData*)[params objectForKey:@"file"];
[params removeObjectForKey:@"file"];
}
NSMutableURLRequest *apiRequest =
[self multipartFormRequestWithMethod:@"POST"
path:kAPIPath
parameters:params
constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
if (uploadFile) {
[formData appendPartWithFileData:uploadFile
name:@"file"
fileName:@"photo.jpg"
mimeType:@"image/jpeg"];
[formData throttleBandwidthWithPacketSize:5000 delay:kAFUploadStream3GSuggestedDelay];
}
}];
AFHTTPRequestOperation *operation2 = [[AFJSONRequestOperation alloc] initWithRequest: apiRequest];
[operation2 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation2, id responseObject) {
//success!
completionBlock(responseObject);
} failure:^(AFHTTPRequestOperation *operation2, NSError *error) {
//failure :(
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];
[operation2 setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
if (self.delegate) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
[self.delegate didReceiveData:(totalBytesWritten/(float)totalBytesExpectedToWrite)];
}
}];
[[API sharedInstance] enqueueHTTPRequestOperation:operation2];
這是隨機的。我的意思是有些時候一切都很完美,有些時候進程在發送過程的中間被阻塞,並以Timeout錯誤結束。
我試圖噸的參數和不同的組合,但我始終有相同的行爲。
PS:我使用框架的最後一個版本。
PS2:我所有的測試都是在兩個模擬器和設備進行,並通過WiFi連接
我試着添加方法,但數據包的大小不會從我在ProgressBlock的日誌中看到的變化發生變化,並且如果我添加延遲,則會導致與服務器斷開連接。 我所有的測試都是通過模擬器和手機完成的,並且始終通過Wifi連接。 此外,我只是想補充說,我從來沒有看到我的failureBlock中的「請求身體流枯竭」錯誤。 –
那麼這就縮小了一些可能性。這種或那種方式很難說。這很可能是一個服務器問題,所以儘可能地多,你應該把重點放在那裏進行調試。 – mattt
謝謝我會試着潛入服務器日誌。 –