首页 > 解决方案 > iOS 无法在移动数据/4G 网络上上传图像,而在 Wifi 中它工作正常

问题描述

我正在使用 NSURLSesssion 上传任务将图像上传到服务器,以字节发送。它在 wifi 中工作正常。但是当我使用 MobileData/4G LTE 网络上传时,它显示 -1001 错误代码。1.增加服务器端超时至4分钟。2.尝试使用小 kb 大小的图像仍然存在仅在 4GLTE 网络上的问题。

注意:相同的服务 API 在 Andriod 中工作。

请让我知道会是什么问题。?

    NSMutableURLRequest * request = [[NSMutableURLRequest alloc] init];
    NSString *boundary = @"---------------------------14737809831466499882746641449";
    [request setCachePolicy:cachePolicy];
    [self prepareMethod:methodURL methodType:methodType dataInBody:dataInBody contentType:contentType withRequest:request];
    [request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary] forHTTPHeaderField:@"Content-Type"];

    [NSURLRequest allowsAnyHTTPSCertificateForHost:@“yyyy.abc.com"];



    NSMutableData * bodyData = [[NSMutableData alloc] init];

    params = [[[NSUserDefaults standardUserDefaults]objectForKey:@"userparams"]mutableCopy];

        for (NSString *param in params)
        {
            if (![param isEqualToString:@"file"]) {
                [bodyData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
                [bodyData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", param] dataUsingEncoding:NSUTF8StringEncoding]];
                [bodyData appendData:[[NSString stringWithFormat:@"%@\r\n", [params objectForKey:param]] dataUsingEncoding:NSUTF8StringEncoding]];
            }
        }

        // add image data
        [bodyData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpeg\"\r\n", @"file"] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[params objectForKey:@"file"]];
        [bodyData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];



    //NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
    // sessionConfiguration.timeoutIntervalForRequest = 120.0;
    NSURLSession *session = [NSURLSession sharedSession];

    NSURLSessionUploadTask* uploadtask = [session uploadTaskWithRequest:request fromData:bodyData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){

              if (!error)
              {
                  NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
                  HttpResponse * response = [[HttpResponse alloc] initWithHttpURLResponse:httpResponse withData:data];



                  dispatch_async(dispatch_get_main_queue(), ^{
                      if ([delegate respondsToSelector:@selector(connectionFinishedLoading:)]) {
                          [delegate connectionFinishedLoading:response];
                      }
                  });

              }
              else
              {
                  dispatch_async(dispatch_get_main_queue(), ^{
                      if ([delegate respondsToSelector:@selector(connectionFailedWithError:)])
                      {
                          [delegate connectionFailedWithError:error];
                      }
                  });
              }


          }];
    [uploadtask resume];

}

标签: iosswiftserverimage-uploadingnsurlsession

解决方案


推荐阅读