Ios ASIFormDataRequest不将带有图像的JSON数据发送到PHP服务器
我想用JSON和图像数据向服务器发送POST请求。我正在使用下面的代码,但每次运行时都会出现以下错误- {Code=400;Detail=“无法解析form.request中的JSON”; 响应=错误;} 这是ASIFormDataRequest请求-Ios ASIFormDataRequest不将带有图像的JSON数据发送到PHP服务器,ios,objective-c,json,asihttprequest,asiformdatarequest,Ios,Objective C,Json,Asihttprequest,Asiformdatarequest,我想用JSON和图像数据向服务器发送POST请求。我正在使用下面的代码,但每次运行时都会出现以下错误- {Code=400;Detail=“无法解析form.request中的JSON”; 响应=错误;} 这是ASIFormDataRequest请求- ASIFormDataRequest *asiRequest = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlForAPI]]; [asiRequest setTimeOu
ASIFormDataRequest *asiRequest = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlForAPI]];
[asiRequest setTimeOutSeconds:60];
NSDictionary *dict1 = [[[NSDictionary alloc]initWithObjectsAndKeys:api_username,@"api_username",api_password,@"api_password",@"updateUser",@"method", nil] autorelease];
NSDictionary *dict2 = [[[NSDictionary alloc]initWithObjectsAndKeys:@"13",@"id",nil] autorelease];
NSDictionary *data = [[[NSDictionary alloc]initWithObjectsAndKeys:dict1,@"request",dict2,@"methodparam", nil] autorelease];
NSMutableDictionary *requestheaders =[[[NSMutableDictionary alloc]init] autorelease];
[requestheaders setValue:@"multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY-8522EA03-7EA6-446F-9CAB-6EC10511FD22" forKey:@"Content-Type"];
[asiRequest setRequestHeaders:requestheaders];
NSData *jsonData = [data JSONData];
NSString *string = [[[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding] autorelease];
[asiRequest setRequestHeaders:requestheaders];
NSString *jsonString = [NSString stringWithFormat:@"REQUEST=%@",string];
NSData *requestData = [NSData dataWithBytes:[jsonString UTF8String] length:[jsonString length]];
[asiRequest setPostBody:[NSMutableData dataWithData:requestData]];
[asiRequest addData:imageData forKey:@"logo"];
[asiRequest setShouldContinueWhenAppEntersBackground:YES];
[asiRequest setDelegate:self];
[asiRequest setRequestMethod:@"POST"];
[asiRequest setDidFailSelector:@selector(uploadFailed:)];
[asiRequest setDidFinishSelector:@selector(uploadFinished:)];
[asiRequest startAsynchronous];
如果你知道我错在哪里,请告诉我。如果您有任何建议,我们将不胜感激。请尝试下面的方法,除此之外无需做任何其他事情
NSURL *url = [NSURL URLWithString:@"YOUR_URL_TO_POST"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setUseKeychainPersistence:YES];
[request setData:imageData withFileName:@"img.png" andContentType:@"image/png" forKey:@"logo"];
[request setDelegate:self];
[request setDidFinishSelector:@selector(uploadRequestFinished:)];
[request setDidFailSelector:@selector(uploadRequestFailed:)];
[request startAsynchronous];
并编写委托方法,如
- (void)uploadRequestFinished:(ASIHTTPRequest *)request{
NSString *responseString = [request responseString];
NSLog( @"response--%@",responseString );
}
- (void)uploadRequestFailed:(ASIHTTPRequest *)request{
NSLog(@" Error - Statistics file upload failed: \"%@\"",[[request error] localizedDescription]);
}
谢谢@murali,但我必须发送json请求以及图像数据,json请求包括api_用户名、api_密码和一个方法参数,即用户id。如果您对如何发送带有图像数据的json字典有任何想法,请告诉我。多谢。