我是ios webservices的新手,所以我在最近2到3天遇到了问题, 我必须向服务器发送一个请求,它有多个部分,如image和json,我试图使用multipart / form-data发送我的请求,但由于某种原因,服务器无法获取请求,任何人都可以帮助我解决这个问题
我正在使用的代码是
NSData *imageData = UIImagePNGRepresentation(img);
NSMutableURLRequest *theRequest =[NSMutableURLRequest requestWithURL:theURL];
NSString *boundary = [NSString stringWithFormat:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[theRequest addValue:contentType forHTTPHeaderField:@"Content-Type"];
[theRequest setHTTPMethod:@"POST"];
NSMutableString *theBody = [[NSMutableString alloc]init];
[theBody appendString:[NSString stringWithFormat:@"\r\n--%@\r\n", boundary]];
[theBody appendString:[NSString stringWithFormat:@"Content-Type: application/json\r\n\r\n"]];
//append The Json string
[theBody appendString:myJsonString];
[theBody appendString:[NSString stringWithFormat:@"%@", boundary]];
//this appends the image
[theBody appendString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"data\"; filename=\"photo\""]];
[theBody appendString:[NSString stringWithFormat:@"Content-Type: image/png\r\n\r\n"]];
[theBody appendString:[NSString stringWithFormat:@"%@",imageData]];
[theBody appendString:[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] ];
[theRequest setHTTPBody:[theBody dataUsingEncoding:NSUTF8StringEncoding]];
答案 0 :(得分:0)
我觉得直接使用NSMutableURLRequest很复杂,请尝试使用“ASIFormDataRequest”,它很容易使用。它们还有许多其他功能,如缓存响应,取消请求。文档为here。
答案 1 :(得分:0)
所以,基本上我得到的是你在JSON
内发送图片时遇到的问题。
在这种情况下,您首先要做的就是在NSData
中对图像进行细分,然后在数据之后需要Base64
编码器方案,如下所示:
[Base64 encode:(NSData)data]
现在,您可以存储在您需要的结构中,比如说如果您需要存储在字典中,那么您可以实现相同的目标,如:
NSMutableDictionary* dict = [NSMutableDictionary new];
[dict setObject:[Base64 encode:data] forKey:@"imageBytes"]; // I did in single step but if you need you can do two steps...
现在,只需使用之前使用的JSON
。
如有任何疑虑,请与我联系。 :)