gpt4 book ai didi

ios - 使用 AFNetworking 在 iOS 上上传大文件 - 错误请求超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:12 25 4
gpt4 key购买 nike

我正面临下一个问题。在我的项目中,我将 AFNetworking 用于所有网络操作。其中之一是向服务器上传视频。然后我尝试上传大视频(大约 100 Mb),我收到请求超时错误。

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x15641b30
{NSErrorFailingURLStringKey=http://server.name/path, NSErrorFailingURLKey=http://server.name/path, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x16f7a000 "The request timed out."}

现在我使用的是 AFNetworking v1.3.3,我不能使用 v2.0,因为需要支持 iOS5。

刚开始上传时,上传进度看起来很好(我通过 UploadProgressBlock 看到的)。但是在几兆字节之后,上传开始变慢,然后停止。SpeedTest 为我提供 5Mbps 的上传速度和 5Mbps 的下载速度。

通过网络浏览器上传视频工作正常,所以我认为那不是服务器问题。

这是我的代码:

AFHTTPClient *client = [AFHTTPClient clientWithBaseURL: 
[NSURL URLWithString:@"http://server.name/"]];
NSString *appid = [[self class] sharedProvider].ApplicationId;

ALAssetRepresentation *representaion =
[videoData.videoAsset defaultRepresentation];
NSURL *url =
[BRDataProvider getVideoAssetURLForTempFileWithAsset:
videoData.videoAsset];

AFHTTPRequestOperation *operation;

if (url) {
NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST"
path:@"some/path" parameters:nil

constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

NSData *hdnADCID = [appid dataUsingEncoding:NSUTF8StringEncoding];
[formData appendPartWithFormData:hdnADCID name:@"hdnADCID"];
NSData *txtTitle =
[videoData.title dataUsingEncoding:NSUTF8StringEncoding];

[formData appendPartWithFormData:txtTitle name:@"txtTitle"];

NSData *txtDescription =
[videoData.description dataUsingEncoding:NSUTF8StringEncoding];
[formData appendPartWithFormData:txtDescription name:@"txtDescription"];

NSData *txtKeywords =
[videoData.tags dataUsingEncoding:NSUTF8StringEncoding];
[formData appendPartWithFormData:txtKeywords name:@"txtKeywords"];
[formData
appendPartWithFileURL:url name:representaion.filename error:nil];
}];
[request setTimeoutInterval:600];
operation = [fliqzClient HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {

[[NSFileManager defaultManager] removeItemAtURL:url error:nil];

NSString *assetID = [operation.responseString
stringByReplacingOccurrencesOfString:@"&\r\n" withString:@""];
assetID = [assetID stringByReplacingOccurrencesOfString:@"id=
" withString:@""];
videoData.assetId = assetID;
[BRDataProvider registerVideoWithInfo:videoData completion:^(id result,
NSError *error) {
block(result,error);
}];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"error - %@", error);

block(nil,error);
[[NSFileManager defaultManager] removeItemAtURL:url error:nil];
}];

[operation setUploadProgressBlock:^(NSUInteger bytesWritten,
long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"bytesWritten - %d, totalBytesWritten - %lld,
totalBytesExpectedToWrite - %lld", bytesWritten,
totalBytesWritten, totalBytesExpectedToWrite);
}];
[client enqueueHTTPRequestOperation:operation];
} else {
NSError *error = [NSError errorWithDomain:kBRErrorDomainOwnDomain
code:0



userInfo:@{NSLocalizedDescriptionKey:kPreprocessingErrorUploadVideoMessage}];
block(nil, error);
}

也许有人知道如何修复它?感谢您的帮助!

最佳答案

我在使用 AFNetworking 时遇到了类似的问题:NSURLErrorDomain Code=-1001 “请求超时。”当从外部服务器检索并且设备位于连接到 WAN 的路由器的子网上时,请求工作正常(192.168.1.0 subnet-1 -> WAN)。但是,如果连接到连接到 WAN 的路由器的子网,则请求失败并显示上述消息(192.168.0.0 子网 2 -> 192.168.1.0 子网 1 -> 广域网)。所有浏览器操作都可以通过 subnet-2 正常工作,AFNetworking 似乎已连接但收到超时。我怀疑问题出在 subnet-2 路由器的配置上。

关于ios - 使用 AFNetworking 在 iOS 上上传大文件 - 错误请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com