ASIFormDataRequest:无法使用异步请求将文件发送到服务器

时间:2013-03-04 19:01:11

标签: objective-c asynchronous synchronous asiformdatarequest

我想将一个文件异步发送到服务器;但是,似乎我将请求发送到服务器。服务器给我一个HTTP代码:200,这没关系,但没有文件上传到服务器。

然而,当我把它留给同步时......它完美无缺。怪异..

非常感谢任何想法,

- (void) sendCSVtoServer: ( Session * ) archive_session {

    NSLog(@"file name: %@", [archive_session getFile]);

    NSURL *url = [NSURL URLWithString:@"http://xx.x.xxx.xxx:3000/xxx/xxxxxxxx"];

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

    [request setPostValue: [archive_session getEmail] forKey:@"email"];
    [request addFile: [archive_session getFile] forKey:@"csv"];
    [request setDelegate:self];
    [request startSynchronous];

}

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在设置委托,但是您提到您没有实现任何这些方法。 ASIFormDataRequest扩展ASIHTTPResquest,因此会继承其所有属性。

您必须在ASIHTTPRequestDelegate中实施十进制的方法,至少

- (void)requestFinished:(ASIHTTPRequest *)request;

- (void)requestFailed:(ASIHTTPRequest *)request;

也许其他人视您的需要而定。

您的上传可能仍然有效(您可以查看服务器吗?),但是,当您异步发送请求时,您无法确定请求是成功还是失败;现在你只是在劝说和遗忘。

ASIHTTPRequestDelegate.h中声明的所有方法都被标记为可选,这就是调试器,编译器和运行时没有抱怨的原因。