2012-05-09 12 views
0

ASIHttpライブラリを使用してiPadアプリケーションからApacheサーバーにポストデータを送信しようとしています。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:私はYES = ASIRequest.shouldCompressRequestBodyを削除した場合、すべてが正常に動作し、私はデータを見ることができますが、それを使用するとき、私は

  1. 要求

    は、GETメソッドを介してこのようなデータを送信するために
  2. nowayサーバー上ではなく、パラメータなしで見ることができ、サーバー上で何も見えません。
  3. サーバーの設定は問題ありません。

どのような解決策ですか?どんなコメントやアイデアが助けになるでしょうか?

答えて

0

デフォルトでは、ほとんどのWebサーバーはPOSTでの圧縮をサポートしていません。ここで受け入れられた答えは、それを説明する本当に良い仕事です:Why can't browser send gzip request?

この機能はApacheサーバでのみテストされています。

編集:ここでは

は、実際のポストデータを圧縮コードsniptです:

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

私は私のサーバーは、私の問題は、上にあるzip形式の要求を受け入れることができると確信していクライアント側。 – daigoor

+0

私をユーモアにして、curlのような別のクライアントを介して圧縮されたリクエストを送信できますか?サーバーが正常に動作していることを100%確認したいだけです。 – Jason

+0

私はしていたと私は言った "サーバーの設定は良いです。私もそうするためにAndroidクライアントを使用しています。 – daigoor

関連する問題