ASIFormDataRequest: невозможно отправить файл на сервер с помощью асинхронного запроса

Я хотел бы отправить файл асинхронно на сервер; однако, похоже, что когда я отправляю запрос на сервер. Сервер дает мне HTTP-код: 200, который в порядке, но файл не загружается на сервер.

Однако, когда я оставляю это синхронно... это работает отлично. Weird..

Благодарим за любую идею,

- (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 ответ

Вы устанавливаете делегата, но упоминаете, что не реализовали ни один из этих методов. ASIFormDataRequest продолжается ASIHTTPResquestи, следовательно, наследует все свои свойства.

Вам нужно будет реализовать методы decalred в ASIHTTPRequestDelegate, по крайней мере

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

а также

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

Может быть, другие в зависимости от ваших потребностей.

Возможно, ваша загрузка все еще работает (вы можете проверить свой сервер?), Но, когда вы отправляете запрос асинхронно, у вас нет никакого способа определить, был ли запрос успешным или неудачным; Прямо сейчас вы просто седнете и забываете.

Все методы объявлены в ASIHTTPRequestDelegate.h помечены как необязательные, поэтому отладчик, компилятор и среда выполнения не жалуются.

Другие вопросы по тегам