iOS开发,后台接口问题。上传图片,怎么把图片放入字典?怎么搞定后台?

iOS开发需要上传图片,常用功能。使用POST请求
我使用AFN,一般都是配置请求头,
google 了很久, 没收获。
请求体里面放图片二进制数据。
现在后台要求,后台是Java, 上传图片需要键值匹配?
clipboard.png
不会了!

 [formData appendPartWithFileData:imageData name: @"photoFile" fileName:[NSString stringWithFormat:@"%@%@.jpeg",dateString,@(idx)] mimeType:@"image/jpeg"];
//其中name很重要,很重要,是后台上传的key,这个是后台规定的,要跟后台协商,不同的后台,可能写图片上传的key,就不一样,这个要问后台了,我就是没有跟后台协商,

我设置name后, 经后台检测,上传成功了。
AFN 报错。

domain: @"com.alamofire.error.serialization.response"

这个错误,我堵了半天,没堵上。
具体: 我在AFN 的

 @implementation AFJSONResponseSerializer
 

处理 类型,感觉 失败了。

 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];

感觉这个key -photoFile, 后台搞显式了。
跟后台协调,不要key,不太懂。被怼晕了,怎么说服后台?

阅读 5.3k
3 个回答

按照AFN提示的报错,与后台协商,将返回的数据,由字符串转为JSON对象(字典),就好了。

新手上路,请多包涵
+ (void)requestForXppWithImageData:(NSData *)data success:(void (^)(NSDictionary *))success fail:(void (^)(NSError *))fail
{
    AFHTTPSessionManager *manager = [self requestManager];

    [manager POST:@"http://11.11.11.11:8888/xxx/xxx/xxx"
       parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
    [formData appendPartWithFileData:data name:@"" fileName:@"" mimeType:@""];
}
         progress:nil
          success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
              if (responseObject)
              {
                  NSString *data = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
                  NSDictionary *dic = [self dicFromJson:data];
                  if (dic){ success(dic);}
              }
          }
          failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
              if (error){ fail(error);}
          }];
}

这个是我写的,当初遇到了和你一样的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题