ios - 使用AFNetWorking 上传字符串,提示:Request failed: 请求太大
PHPz
PHPz 2017-04-17 15:48:45
[iOS讨论组]

我要把图片换成nsdata,然后再用base64encoding,把encoding后生成的字符串上传到
服务器,就出这个问题,
报错信息:err:Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: 请求太大 (413)"
我同事用的ASIHTTPRequest库就没问题,请问如何解决?
代码:

UIImage *img = [self createThumbnailWithSourceImge:sourceImg andNewSize:sz];

       data  = UIImageJPEGRepresentation(img, 0.01);
        NSString *encodedSTR  = [data base64Encoding];
                NSString *currentUrl = @"/app/b/test";
        NSString *urlStr = [NSString stringWithFormat:@"%@%@?picStr=%@",BASEURL,currentUrl,encodedSTR];
        NSURL *url = [NSURL URLWithString:urlStr];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
                 AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc]initWithRequest:request];
    op.responseSerializer = [AFJSONResponseSerializer serializer];
    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//        NSLog(@"success:%@",responseObject);
        successBlock(responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        failureBlock(error);
    }];
    [op start];


     //   [manager POST:urlStr parameters:nil
     //         success:^(AFHTTPRequestOperation *operation, id responseObject) {
        //          NSLog(@"success:%@",responseObject);
         //     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         //         NSLog(@"err:%@",error);
         //     }];
PHPz
PHPz

学习是最好的投资!

全部回复(3)
PHP中文网

图片转换成 NSData 之后就不用再转 String 了,直接上传就行了。

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString: BASEURL]];
NSData *imageData = UIImageJPEGRepresentation(img, 0.1);
NSDictionary *parameters = @{@"你们需要的参数": XXXXXXX};
AFHTTPRequestOperation *op = [manager POST:currentUrl parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    
    [formData appendPartWithFileData:imageData name:paramNameForImage fileName:@"photo.jpg" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[op start];
大家讲道理

问题的原因是你走的是GET请求,因为GET请求参数长度是有限制的,例如apache默认是2MB(不知道记错没有),所以如果你图片超过了这个大小,就失败了,你可以把请求改成POST试试。

PHP中文网

你好 我想问下iOS点击消息通知时,怎么跳转到相应的控制器中,求帮忙 感谢了 我的Q 是1144513732 拜托 拜托了 无计可施了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号