Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 正在尝试使用MKNetworkKit在本地服务器中上载数据_Objective C_Ios5_Network Programming_Localhost_Reachability - Fatal编程技术网

Objective c 正在尝试使用MKNetworkKit在本地服务器中上载数据

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

我想上传数据、图像、txt文件、pdf文档等。 我正在使用MKNetworkKit进行干净的连接。通过这个框架的例子,我尝试这样做。 我向我的项目中添加了一个MKNetworkEngine的类扩展,其中包含一个用于从文件上载的方法:

#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;
}