zoukankan      html  css  js  c++  java
  • ios下表单post使用gzip模式

    使用afnetworking,服务器参考的这里

    ios端,使用自己的序列化类

    manager.requestSerializer = [MyHttpRequestSerializer new];
    [manager.requestSerializer setValue:
    @"gzip" forHTTPHeaderField:@"Accept-Encoding"];
    [manager.requestSerializer setValue:
    @"gzip" forHTTPHeaderField:@"Content-Encoding"];

    h文件

    #import <Foundation/Foundation.h>
    #import "AFURLRequestSerialization.h"
    
    @interface MyHttpRequestSerializer : AFHTTPRequestSerializer
    
    @end

    关键代码,参考AFJSONRequestSerializer

    @implementation MyHttpRequestSerializer
    
    - (nullable NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                                            withParameters:(nullable id)parameters
                                                     error:(NSError * _Nullable __autoreleasing *)error NS_SWIFT_NOTHROW{
    
        NSParameterAssert(request);
        
        if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
            return [super requestBySerializingRequest:request withParameters:parameters error:error];
        }
        
        NSMutableURLRequest *mutableRequest = [request mutableCopy];
        
        [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) {
            if (![request valueForHTTPHeaderField:field]) {
                [mutableRequest setValue:value forHTTPHeaderField:field];
            }
        }];
        
        if (parameters) {
            if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
                [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
            }
            
            NSData* data = [NSJSONSerialization dataWithJSONObject:parameters options:(NSJSONWritingOptions)0 error:nil];
            NSData* zippeddata = [LFCGzipUtillity gzipData:data];
            [mutableRequest setHTTPBody:zippeddata];
        }
        
        return mutableRequest;
    }
    
    @end

    android相关资料在这里

    rails5的相关资料在这里

  • 相关阅读:
    - > 听学姐讲那过去的故事——打代码的小女孩
    - > 强烈推荐!!!
    - > 贪心基础入门讲解五——任务执行顺序
    - > 贪心基础入门讲解二——活动安排问题
    - > 贪心基础入门讲解三——活动安排问题二
    - > 贪心基础入门讲解四——独木舟问题
    django装饰器
    POJ——T2421 Constructing Roads
    洛谷——P3258 [JLOI2014]松鼠的新家
    BZOJ——1787: [Ahoi2008]Meet 紧急集合
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/9019962.html
Copyright © 2011-2022 走看看