2012-05-09 2 views
0

Я пытаюсь отправить некоторые данные сообщения на сервер Apache из приложения iPad с использованием библиотеки ASIHttp.Как сжать запрос, используя ASIFormDataRequest?

На самом деле мне нужно отправить огромные данные на сервер, а это значит, что мне нужно сжать тело запроса, чтобы написать код для отправки данных и сжать запрос, но на сервере нет параметров, полученных на сервере !!!

код IOS, является:

 NSURL * URL = [NSURL URLWithString:myURL]; 
     ASIFormDataRequest *ASIRequest = [ASIFormDataRequest requestWithURL:URL]; 
     ASIRequest.shouldCompressRequestBody=YES; 
     ASIRequest setPostValue:data forKey:@"data"]; 
     [ASIRequest startSynchronous]; 
     NSError *error = [ASIRequest error]; 
     if (!error) { 
      NSString *response = [ASIRequest responseString]; 
      NSLog(@"response %@" , response); 
     } 

PS: если я удалил ASIRequest.shouldCompressRequestBody = ДА; все работает отлично, и я могу видеть данные, но при использовании его я ничего не вижу на сервере

  1. запрос можно увидеть на сервере, но без параметра
  2. ни в коем случае посылать такие данные по методу GET.
  3. Конфигурация сервера в порядке.

любое решение? любые комментарии или идеи могут помочь?

ответ

0

По умолчанию большинство веб-серверов не поддерживают сжатие на POST. Принятый здесь ответ дает хорошую работу, объясняя это: Why can't browser send gzip request?

Согласно официальной документации, эта функция была протестирована только с серверами Apache.

EDIT:

Вот фрагмент программы наглядно, который сжимает фактические данные после:

if ([self shouldCompressRequestBody]) { 
    NSError *err = nil; 
    NSData *compressedBody = [ASIDataCompressor compressData:[self postBody] error:&err]; 
    if (err) { 
     [self failWithError:err]; 
     return; 
    } 
    [self setCompressedPostBody:compressedBody]; 
    [self setPostLength:[[self compressedPostBody] length]]; 
} 

Источник: http://forums.three20.info/discussion/77/tturlrequest-vs-asihttprequest/p1

+0

Я уверен, что мой сервер может принимать запросы заархивированные моя проблема на сторона клиента. – daigoor

+0

Можете ли вы пошутить меня и попытаться отправить сжатый запрос другим клиентом, как завиток? Просто хочу быть на 100% уверенным, что сервер работает правильно. – Jason

+0

Я сделал, и я сказал, что «конфигурация сервера в порядке». Я использую также клиент Android для этого, и все в порядке! – daigoor

Смежные вопросы