我的应用程序从我的服务器(GoDaddy)下拉JSON文件并将其解析为数组。然后,用户可以向现有JSON添加新记录。当我尝试将所有数据发回服务器时,我遇到了问题。
要明确的是,我尝试使用新数据覆盖服务器上的现有文件。我知道FTP不是我需要的方向,但我没有使用任何类型的数据库。只是服务器上的文件。
我确保JSON有效且我已调用GoDaddy以确保我不需要更改任何权限。我之前已将此目录用于FTP。
我的REMOTE_PATH_TO_ROOT_APP_FOLDER
是否使用FTP凭据?如果是,我需要使用哪个URL?
- (void)postExamplesDictionaryToServer:(nonnull NSString *)dName
:(nonnull NSString *)rName
:(nonnull NSData *)jsonData
{
NSString *userFileURLString = [NSString stringWithFormat:@"%@/%@/%@TESTER.json", REMOTE_PATH_TO_ROOT_APP_FOLDER, dName, rName];
NSURL *userFileURL = [NSURL URLWithString:userFileURLString];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[jsonData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:userFileURL];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
[[self.session uploadTaskWithRequest:request fromData:jsonData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"Error: %@", error);
}] resume];
}
编辑:我记录了传递给完成处理程序的NSERROR并得到了这个:
Error: (null)
但是......如果我将URL更改为服务器上已经存在的文件,我会得到:
Error: Error Domain=NSURLErrorDomain Code=-1008 "resource unavailable"
UserInfo={NSUnderlyingError=0x7fca8ad44280 {Error Domain=kCFErrorDomainCFNetwork Code=-1008 "(null)"},
NSErrorFailingURLStringKey=ftp://*****:*****@ftp.*****.com/public_html/app/******/File.json,
NSErrorFailingURLStringKey=ftp://*****:*****@ftp.*****.com/public_html/app/******/File.json, NSLocalizedDescription=resource unavailable}
这是否意味着它没有尝试上传任务,只是以某种方式提出请求?