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 回答