загрузить файл plist на сервер в iphone - PullRequest
0 голосов
/ 21 октября 2010

Я создал файл plist, отличный от существующего по умолчанию. Могу ли я загрузить этот файл plist на сервер

Я попробовал ASIFormDataRequest. Я смог загрузить изображение и текстовый файл, но когда я попробую его с plist, он выдаст ошибку в точке, показанной жирным шрифтом:

Код:

networkQueue = [[ASINetworkQueue queue] retain];

NSString *filePath = [[[NSBundle mainBundle] 
resourcePath] stringByAppendingPathComponent:
[@"test" stringByAppendingString:@".plist"]];

ASIFormDataRequest *request =[ASIFormDataRequest 
requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ignore"]];

[request setPostValue:@"my_test" forKey:@"share_test"];


[request setFile:filePath 
withFileName:[test stringByAppendingString:
@".plist"] andContentType:@"propertylist/plist" forKey:@"mytest"];

[request setDelegate:self];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDidFinishSelector:@selector(gotTheResponse:)];

[networkQueue addOperation: request];

[networkQueue go];

это действительно возможно? или я должен идти дальше с XML хотя plist - это также формат xml

но все же я хочу знать и что мне делать?

Ответы [ 3 ]

2 голосов
/ 26 октября 2010
networkQueue = [[ASINetworkQueue queue] retain];

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];       
dateString = [formatter stringFromDate:[NSDate date]];

[formatter release];

// hyphen(-) joins file name with the timestamp for uniqueness

NSString *theme_name1 = [[[theme_name stringByAppendingString:@"-"] 
                stringByAppendingString:dateString] 
                stringByReplacingOccurrencesOfString:@" "  withString:@"_" ];



NSArray *paths =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                      NSUserDomainMask, YES);


NSString *documentsPath = [paths objectAtIndex:0]; 
NSString *path = [documentsPath stringByAppendingPathComponent:
                    [file_name stringByAppendingString:@".plist"]];
id plist = [[NSDictionary alloc] initWithContentsOfFile:path];



NSData *xmlData = [NSPropertyListSerialization dataFromPropertyList:plist 
                    format:NSPropertyListXMLFormat_v1_0 errorDescription:nil];
NSString *xml_string = [[NSString alloc] initWithData:xmlData 
                                         encoding:NSUTF8StringEncoding];


NSURL *url = [NSURL URLWithString:@"myurl"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"file_name1 forKey:@"filename"];
[request setPostValue:@"user" forKey:@"sharedby"];
[request setPostValue:xml_string forKey:@"data"];
[request setUsername:@"hello"];
[request setPassword:@"world"];
[request setDelegate:self];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDidFinishSelector:@selector(gotTheResponse:)];
[networkQueue addOperation:request];
[networkQueue go];
2 голосов
/ 02 декабря 2012

Я заставил мою работать. Надеюсь, это кому-нибудь поможет:)

NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
[@"test" stringByAppendingString:@".plist"]];
NSDictionary *plist = [[NSDictionary alloc] initWithContentsOfFile:path];
NSData *data = [NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListXMLFormat_v1_0 errorDescription:nil];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"yourUrl"]];
[request addData:data withFileName:@"test.plist" andContentType:@"propertylist/plist" forKey:@"file"];
[request setDelegate:self];
[request startAsynchronous];
0 голосов
/ 21 октября 2010

Если вы правы в том, что XML и текстовые файлы подходят для приведенного выше кода, то наиболее вероятным объяснением может быть то, что либо путь к файлу plist неверен, либо права доступа к файлу не позволяют файлу быть читать.

Вы можете включить отладку в ASIHTTPRequestConfig.h, которая может раскрыть больше информации о происходящем.

...