Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AF3.0中包含图像和其他参数的多部分数据_Ios_Objective C_Iphone_Afnetworking_Afnetworking 3 - Fatal编程技术网

Ios AF3.0中包含图像和其他参数的多部分数据

Ios AF3.0中包含图像和其他参数的多部分数据,ios,objective-c,iphone,afnetworking,afnetworking-3,Ios,Objective C,Iphone,Afnetworking,Afnetworking 3,我上传带有其他参数的图像时遇到问题。使用AF3.0 com.alamofire.serialization.response.error.data=,NSLocalizedDescription=请求失败:内部服务器错误(500)}我正在获取 NSMutableDictionary *getUpdates= [[NSMutableDictionary alloc]init]; NSString*userID=@"3"; [getUpdates setObject:userID forKey:@"

我上传带有其他参数的图像时遇到问题。使用AF3.0


com.alamofire.serialization.response.error.data=,NSLocalizedDescription=请求失败:内部服务器错误(500)}我正在获取

NSMutableDictionary *getUpdates= [[NSMutableDictionary alloc]init];
NSString*userID=@"3";
[getUpdates setObject:userID forKey:@"userId"];
[getUpdates setObject:phoneNumTF.text forKey:@"mobileNumber"];
[getUpdates setObject:nameTF.text forKey:@"name"];
[getUpdates setObject:workZipCodeTF.text forKey:@"work"];
[getUpdates setObject:homeZipCodeTF.text forKey:@"home"];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

[manager POST:kUpdateProfile_Post parameters:getUpdates constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:ImageData
                                name:@"files"
                            fileName:@"picture" mimeType:@"image/jpeg"];
} progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
    NSLog(@"Response: %@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"Error: %@", error);
}];
NSMutableDictionary*getUpdates=[[NSMutableDictionary alloc]init];
NSString*userID=@“3”;
[getUpdates setObject:userID forKey:@“userID”];
[getUpdates setObject:phoneNumTF.text-forKey:@“mobileNumber”];
[getUpdates setObject:nameTF.text forKey:@“name”];
[getUpdates setObject:workZipCodeTF.text forKey:@“work”];
[getUpdates setObject:homeZipCodeTF.text forKey:@“home”];
AFHTTPSessionManager*manager=[AFHTTPSessionManager-manager];
[manager POST:kUpdateProfile\u POST参数:GetUpdate constructingBodyWithBlock:^(id formData){
[formData appendPartWithFileData:ImageData
名称:@“文件”
文件名:@“picture”mimeType:@“image/jpeg”];
}进度:无成功:^(NSURLSessionDataTask*任务,id responseObject){
NSLog(@“响应:%@”,响应对象);
}失败:^(NSURLSessionDataTask*任务,NSError*错误){
NSLog(@“错误:%@”,错误);
}];
这里我需要像这样发送数据 图片:文件名 json:{“name”:“harish”,“work”:92121,“userId”:3,“mobileNumber”:33663366,“home”:“500025”}

有什么帮助吗?

有两种可能

  • 可能是您发送的参数名称不同
  • 服务器开发人员在后端出错
与他讨论这个问题,让他在您提出请求时调试每一行。

两种可能性

  • 可能是您发送的参数名称不同
  • 服务器开发人员在后端出错

与他讨论这个问题,让他在您提出请求时调试每一行。

检查以下代码:

1) 确保ImageData不应为nil

2) 使用服务器检查地雷类型。这两种情况可能不同


3) 用api名称检查密钥名称。

用代码检查以下内容:

1) 确保ImageData不应为nil

2) 使用服务器检查地雷类型。这两种情况可能不同


3) 用api名称检查密钥名称。

//保存post参数的字典。您可以设置服务器接受或编程接受的post参数

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString*userID = [def objectForKey:@"UserId"];
NSMutableDictionary *getUpdates= [[NSMutableDictionary alloc]init];
[getUpdates setObject:userID forKey:@"userId"];
[getUpdates setObject:phoneNumTF.text forKey:@"mobileNumber"];
[getUpdates setObject:nameTF.text forKey:@"name"];
[getUpdates setObject:workZipCodeTF.text forKey:@"work"];
[getUpdates setObject:homeZipCodeTF.text forKey:@"home"];


[MBProgressHUD showHUDAddedTo:self.view animated:true];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // only needed if the server is not returning JSON; if web service returns JSON, remove this line


[manager POST:kUpdateProfile_Post parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:getUpdates options:0 error:&error];
    NSAssert(jsonData, @"Failure building JSON: %@", error);


    NSDictionary *jsonHeaders = @{@"Content-Disposition" : @"form-data; name=\"json\"",
                                  @"Content-Type"        : @"application/json"};
    [formData appendPartWithHeaders:jsonHeaders body:jsonData];

    if (ImageData) {
        [formData appendPartWithFileData:ImageData name:@"picture"
                                fileName:@"image.jpg"
                                mimeType:@"image/jpeg"];
    }
} progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
    NSLog(@"Response: %@", responseObject);

    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseObject
                                                         options:kNilOptions
                                                           error:&error];
    NSLog(@"error appending part: %@", json);

    [MBProgressHUD hideHUDForView:self.view animated:true];

    [self.navigationController popViewControllerAnimated:YES];

} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"Error: %@", error);
    [MBProgressHUD hideHUDForView:self.view animated:true];

}];
NSUserDefaults*def=[NSUserDefaults standardUserDefaults];
NSString*userID=[def objectForKey:@“userID]”;
NSMutableDictionary*getUpdates=[[NSMutableDictionary alloc]init];
[getUpdates setObject:userID forKey:@“userID”];
[getUpdates setObject:phoneNumTF.text-forKey:@“mobileNumber”];
[getUpdates setObject:nameTF.text forKey:@“name”];
[getUpdates setObject:workZipCodeTF.text forKey:@“work”];
[getUpdates setObject:homeZipCodeTF.text forKey:@“home”];
[MBProgressHUD showhud addedto:self.view动画:true];
AFHTTPSessionManager*manager=[AFHTTPSessionManager-manager];
manager.responseSerializer=[AFHTTPResponseSerializer序列化程序];//仅当服务器未返回JSON时才需要;如果web服务返回JSON,请删除此行
[manager POST:kUpdateProfile\u POST参数:nil constructingBodyWithBlock:^(id formData){
n错误*错误;
NSData*jsonData=[NSJSONSerialization dataWithJSONObject:getUpdates选项:0错误:&error];
NSAssert(jsonData,@“构建JSON失败:%@”,错误);
NSDictionary*jsonHeaders=@{@“内容处置”:@“表单数据;名称=\“json\”,
@“内容类型”:@“应用程序/json”};
[formData appendPartWithHeaders:jsonHeaders正文:jsonData];
if(图像数据){
[formData appendPartWithFileData:ImageData名称:@“图片”
文件名:@“image.jpg”
mimeType:@“image/jpeg”];
}
}进度:无成功:^(NSURLSessionDataTask*任务,id responseObject){
NSLog(@“响应:%@”,响应对象);
n错误*错误;
NSDictionary*json=[NSJSONSerialization JSONObject WithData:responseObject
选项:针织品
错误:&错误];
NSLog(@“错误附加部分:%@”,json);
[MBProgressHUD hideHUDForView:self.view动画:true];
[self.navigationController PopViewControllerInitiated:是];
}失败:^(NSURLSessionDataTask*任务,NSError*错误){
NSLog(@“错误:%@”,错误);
[MBProgressHUD hideHUDForView:self.view动画:true];
}];

最后,我得到了包含post参数的代码字典。您可以设置服务器接受或编程接受的post参数

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString*userID = [def objectForKey:@"UserId"];
NSMutableDictionary *getUpdates= [[NSMutableDictionary alloc]init];
[getUpdates setObject:userID forKey:@"userId"];
[getUpdates setObject:phoneNumTF.text forKey:@"mobileNumber"];
[getUpdates setObject:nameTF.text forKey:@"name"];
[getUpdates setObject:workZipCodeTF.text forKey:@"work"];
[getUpdates setObject:homeZipCodeTF.text forKey:@"home"];


[MBProgressHUD showHUDAddedTo:self.view animated:true];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // only needed if the server is not returning JSON; if web service returns JSON, remove this line


[manager POST:kUpdateProfile_Post parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:getUpdates options:0 error:&error];
    NSAssert(jsonData, @"Failure building JSON: %@", error);


    NSDictionary *jsonHeaders = @{@"Content-Disposition" : @"form-data; name=\"json\"",
                                  @"Content-Type"        : @"application/json"};
    [formData appendPartWithHeaders:jsonHeaders body:jsonData];

    if (ImageData) {
        [formData appendPartWithFileData:ImageData name:@"picture"
                                fileName:@"image.jpg"
                                mimeType:@"image/jpeg"];
    }
} progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
    NSLog(@"Response: %@", responseObject);

    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseObject
                                                         options:kNilOptions
                                                           error:&error];
    NSLog(@"error appending part: %@", json);

    [MBProgressHUD hideHUDForView:self.view animated:true];

    [self.navigationController popViewControllerAnimated:YES];

} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"Error: %@", error);
    [MBProgressHUD hideHUDForView:self.view animated:true];

}];
NSUserDefaults*def=[NSUserDefaults standardUserDefaults];
NSString*userID=[def objectForKey:@“userID]”;
NSMutableDictionary*getUpdates=[[NSMutableDictionary alloc]init];
[getUpdates setObject:userID forKey:@“userID”];
[getUpdates setObject:phoneNumTF.text-forKey:@“mobileNumber”];
[getUpdates setObject:nameTF.text forKey:@“name”];
[getUpdates setObject:workZipCodeTF.text forKey:@“work”];
[getUpdates setObject:homeZipCodeTF.text forKey:@“home”];
[MBProgressHUD showhud addedto:self.view动画:true];
AFHTTPSessionManager*manager=[AFHTTPSessionManager-manager];
manager.responseSerializer=[AFHTTPResponseSerializer序列化程序];//仅当服务器未返回JSON时才需要;如果web服务返回JSON,请删除此行
[manager POST:kUpdateProfile\u POST参数:nil constructingBodyWithBlock:^(id formData){
n错误*错误;
NSData*jsonData=[NSJSONSerialization dataWithJSONObject:getUpdates选项:0错误:&error];
NSAssert(jsonData,@“构建JSON失败:%@”,错误);
国家统计局词典*