使用Afnetworking上载图像在ios8中不起作用
我已经在ios7中完成了多个图像上传。但它在ios 8中不起作用。我在下面展示了我的代码。请建议我该怎么办使用Afnetworking上载图像在ios8中不起作用,ios,afnetworking,Ios,Afnetworking,我已经在ios7中完成了多个图像上传。但它在ios 8中不起作用。我在下面展示了我的代码。请建议我该怎么办 NSString *url = [NSString stringWithFormat:@"%@abc.php", SERVERNAME]; [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { for (in
NSString *url = [NSString stringWithFormat:@"%@abc.php", SERVERNAME]; [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
for (int i = 0; i < filesCount; i++) {
NSString *imgName = [NSString stringWithFormat:@"image%d", (int)(i + 1)];
NSData *imgData = [[NSData alloc] initWithContentsOfFile:[dataPath stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@", filelist[i]]]];
[formData appendPartWithFileData:imgData name:imgName fileName:filelist[i] mimeType:@"image/png"];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog("getting response"); } Failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
调试点不在成功部分。
你能帮我解决这个问题吗
提前感谢。您可以使用下面的代码从POST请求中获得响应 1在项目中添加SBJSON类或NSJSONSerialization类来编码数据
NSURL *url = [[NSURL alloc]initWithString:@"You -server -url "];
NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
// Server parameter dict
NSDictionary *jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys:txtUserName.text,@"Email",txtPassword.text,@"Password",[appDelegate uniqueIDForDevice],@"DeviceToken",@"ios",@"DeviceType", nil];
NSString *jsonRequest = [jsonDict JSONRepresentation];
NSData *requestData = [jsonRequest dataUsingEncoding:NSUTF8StringEncoding];
[theRequest setHTTPMethod:@"POST"];
[theRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[theRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[theRequest setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPBody: requestData];
[NSURLConnection sendAsynchronousRequest:theRequest queue:[NSOperationQueue currentQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSError *err = nil ;
NSDictionary *dict= [NSJSONSerialization JSONObjectWithData :data options : 0 error :&err];
NSLog(@"%@",dict);
}];
}
我试过这种方法
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSURL *baseUrl = [NSURL URLWithString:url];
NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
[request setURL:baseUrl];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"0xKhTmLbOuNdArY";
NSString *endBoundary = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; charset=%@; boundary=%@", charset, boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *tempPostData = [NSMutableData data];
[tempPostData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
for(int i=0;i<keys.count;i++){
NSString *str = values[i];
NSString *key =keys[i];
NSLog(@"Key Value pair: %@-%@",key,str);
[tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:[str dataUsingEncoding:NSUTF8StringEncoding]];
// [tempPostData appendData:[@"\r\n--%@\r\n",boundary dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:[endBoundary dataUsingEncoding:NSUTF8StringEncoding]];
}
//semd multiple images to server
for (int i = 0; i < filesCount; i++) {
[tempPostData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
if (i == 0)
{
[tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image1\"; filename=\"%@\"\r\n", filelist[0]] dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:imageData1];
[tempPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
else if (i == 1)
{
[tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image2\"; filename=\"%@\"\r\n", filelist[1]] dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:imageData2];
[tempPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
else
{
[tempPostData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image3\"; filename=\"%@\"\r\n", filelist[2]] dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[tempPostData appendData:imageData3];
[tempPostData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
// [tempPostData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
// [tempPostData appendData:imgData];
}
[tempPostData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:tempPostData];
_receivedData = [NSMutableData dataWithCapacity: 0];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if( theConnection )
{
NSLog(@"request uploading successful");
}
else
{
_receivedData = nil;
NSLog(@"theConnection is NULL");
}
它对我有用。它正在用于上传多个图像。在ios8中,AFN网络仍然存在问题
谢谢Hi Rob,当出现故障部分时,显示请求超时错误。我还查了imgdata。它有价值。不是零,很好。我想我现在应该在iOS 7下运行这个请求,然后再在iOS 8下运行,看看你是否能看到任何不同。嗨,Karan,谢谢你的回答。但我的问题是,我在使用Afnetworking库在服务器上上传多个图像时遇到了一个问题。在本文中,如何传递上传图像的参数。如果您有任何其他解决方案可以使用Afnetworking library或任何其他概念上传多个图像。然后请与我共享。你好,Asha,在NSArray中添加图像集合,然后将NSArray转换为NSData NSData*requestData=[NSKeyedArchiver archivedDataWithRootObject:];NSString*str=[[NSString alloc]initWithData:requestData编码:NSUTF8StringEncoding];嗨,Kirti和Karan,我试过上一个解决方案。Afnetworking库在ios8中仍然存在问题。谢谢