0

ASIHttpライブラリを使用してiPadアプリケーションからApacheサーバーに投稿データを送信しようとしています。

実際には、サーバーに巨大なデータを送信する必要があります。つまり、リクエストの本文を圧縮する必要があるため、データを送信してリクエストを圧縮するコードを記述しますが、サーバーでパラメーターを受信しません。

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=YESを削除した場合; すべてが正常に動作し、データを表示できますが、使用するとサーバーに何も表示されません

  1. リクエストはサーバー上で確認できますが、パラメーターはありません
  2. GETメソッドを介してそのようなデータを送信する方法はありません。
  3. サーバー構成は問題ありません。

解決策はありますか?コメントやアイデアは役に立ちますか?

4

1 に答える 1

0

デフォルトでは、ほとんどのWebサーバーはPOSTでの圧縮をサポートしていません。ここで受け入れられた答えは、それを説明するのに本当に良い仕事をします:なぜブラウザはgzipリクエストを送信できないのですか?

公式ドキュメントによると、この機能はApacheサーバーでのみテストされています。

編集:

実際の投稿データを圧縮するコードスニプトは次のとおりです。

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

于 2012-05-09T09:12:27.937 に答える