Objective c 正在尝试使用MKNetworkKit在本地服务器中上载数据
我想上传数据、图像、txt文件、pdf文档等。 我正在使用MKNetworkKit进行干净的连接。通过这个框架的例子,我尝试这样做。 我向我的项目中添加了一个MKNetworkEngine的类扩展,其中包含一个用于从文件上载的方法:Objective c 正在尝试使用MKNetworkKit在本地服务器中上载数据,objective-c,ios5,network-programming,localhost,reachability,Objective C,Ios5,Network Programming,Localhost,Reachability,我想上传数据、图像、txt文件、pdf文档等。 我正在使用MKNetworkKit进行干净的连接。通过这个框架的例子,我尝试这样做。 我向我的项目中添加了一个MKNetworkEngine的类扩展,其中包含一个用于从文件上载的方法: #import "MKNetworkOperation.h" #import "MKNetworkEngine.h" @interface Uploader : MKNetworkEngine -(MKNetworkOperation*) uploadFromFi
#import "MKNetworkOperation.h"
#import "MKNetworkEngine.h"
@interface Uploader : MKNetworkEngine
-(MKNetworkOperation*) uploadFromFile:(NSString*) file
onError:(MKNKErrorBlock) errorBlock;
@end
#import "Uploader.h"
@implementation Uploader
-(MKNetworkOperation*) uploadFromFile:(NSString*) file
onError:(MKNKErrorBlock) errorBlock
{
MKNetworkOperation *op = [self operationWithPath:@"IP:PORT/PROYECT/"
params:nil
httpMethod:@"POST"];
[op addFile:file forKey:@"upload"];
[op setFreezable:YES];
[op onCompletion:^(MKNetworkOperation* completedOperation)
{
NSString *xmlString = [completedOperation responseString];
NSUInteger start = [xmlString rangeOfString:@"<mediaurl>"].location;
if(start == NSNotFound)
{
NSLog(@"%@", xmlString);
errorBlock(nil);
return;
}
xmlString = [xmlString substringFromIndex:start + @"<mediaurl>".length];
NSUInteger end = [xmlString rangeOfString:@"</mediaurl>"].location;
xmlString = [xmlString substringToIndex:end];
}
onError:^(NSError* error)
{
errorBlock(error);
}];
[self enqueueOperation:op];
return op;
}
@end
最后,我在我的应用程序委托中添加了一个Uploader对象:
及
我的问题是,我想上传文件,我的本地主机无法访问,我不知道为什么
有什么想法吗?[我在使用mknetworkkit寻求帮助时偶然发现了您的问题。]
快速阅读您的代码,我想知道您是否应该从initWithHostName中删除“http://”。我确信该工具包在自己的init中添加了“http://”。RichS是正确的。您不应该在主机名中使用http(协议)。您好,我的实例正在运行。它与您的代码几乎相同。但是,我注意到您有'operationWithPath',但是参数看起来像一个URI。如果要传递完整URI,可能需要使用“operationWithString”。不确定这是否有帮助。附言:我应该能够从我的项目中提取我的代码,如果你仍然不能让它工作的话,我会发布。
-(IBAction)uploadImageTapped:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [paths objectAtIndex:0];
NSString *uploadPath = [NSString stringWithFormat:@"%@/Imagen.jpg",cachesDirectory];
//NSLog(@"%@",uploadPath);
self.uploadOperation = [ApplicationDelegate.sampleUploader uploadFromFile:uploadPath onError:^(NSError* error)
{
[UIAlertView showWithError:error];
}];
}
@property (strong, nonatomic) Uploader *sampleUploader;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
//Uploader
self.sampleUploader = [[Uploader alloc] initWithHostName:@"http://IP:PORT"
customHeaderFields:nil];
return YES;
}